2

我需要在启动时在 android 中启动一个服务我不使用广播接收器,我用 C++ 编写了一个服务,因为我需要访问驱动程序 libusb 层来与我的外部设备通信,如果我手动启动该服务正常工作,如果我想在启动时启动服务意味着我需要在 android 中编辑 inir.rc 文件,如果我这样做它也可以正常工作。但问题是我无法在所有设备中编辑 init.rc。我将我的服务放在 Sytem/bin 位置并编辑 init.rc 文件如下

service sampleservice/system/bin/sampleservice
              oneshot
              disable

对于手动,我像这样从终端启动服务

#./system/bin/sampleservice

但我无法在每次系统重新启动时启动服务确实有任何想法在启动时启动服务而无需编辑 init.rc

4

2 回答 2

1

据我所知(NDK 参考、google 组,如google-ndkandroid-developers等),除了init.rc.

对于您的特定用例,您可以尝试此处描述的USB SDK:http: //developer.android.com/guide/topics/connectivity/usb/index.html 。但是,如果这还不够,或者如果您想支持低于 10 的 OS API 级别,那么我相信没有简单的方法可以实现您想要的。

假设您的服务不是关键的(即系统不依赖它),我在这里看到了几个线程以及建议创建您将使用 ADT 创建的常规 Android 应用程序的组。它将是最小的并且包含:

  • 您的 C++ 服务作为打包的本机库
  • 系统启动后将收到通知的广播接收器(如下所述:http ://www.androidenea.com/2009/09/starting-android-service-after-boot.html )。该接收器将简单地启动本机服务。

当需要在非 root 设备上安装服务时,也建议使用此方法。但是,我从未尝试过。我知道这并不多,但我想分享我对这个主题的了解。

于 2013-02-12T11:18:52.987 回答
-1

我想您需要确保在启动服务之前 fs 已启动......如果您可以从源代码编译,那么一个好主意是在 init 代码本身中启用 Info 日志。

BR Subbu

于 2013-02-12T11:54:11.303 回答