android - 在 Android init.rc 中执行一个守护进程

标签 android android-ndk android-5.0-lollipop daemon nexus-5

我正在尝试在我的 Nexus 5 启动时执行一个守护程序。这是一个使用 c++ 源代码构建的守护程序。但是每当我构建 AOSP 并在我的 Nexus 5 设备上刷新图像时,守护进程都不会在后台运行。我将此代码添加到我的 init.rc 文件中:(这应该使它在启动时在后台运行)

setenforce 0
service my_daemon /system/bin/my_daemon 
    class main     # Also tried: class core (but it didn't make a difference)
    user root
    group root
setenforce 1

我使用 setenfonce 的原因是因为 Android 5.0 及更高版本上的 SELinux。问题是在启动时,守护进程没有在启动时运行。我不知道为什么。有什么建议吗?

最佳答案

我在 nexus 9 上遇到了同样的问题。我将代码添加到 device/htc/flounder/init.flounder.rc 但不起作用。

service pollingclient /system/bin/sh logwrapper
    class late_start
    user root
    group root
    oneshot

on property:dev.bootcomplete=1
    start pollingclient

我的快速修复是在 system/core/adb/adb_auth_client.c 中添加代码以在 fdevent_add(&t->auth_fde, FDE_READ) 之后启动我的守护进程;

kill_if_exist_service("mydaemon");
system("sleep 5; mydaemon");

它有效,但它是某种“快速修复”。我仍在研究正确的解决方案。

更新: 我通过编辑 ./arch/arm64/configs/flounder_defconfig 设置 CONFIG_SECURITY_SELINUX=n 禁用 selinux,然后重新编译内核并重新编译 boot.img。 哇,好用!

关于android - 在 Android init.rc 中执行一个守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29130568/

相关文章:

android - 使用 NDK 捕获标准输出/标准错误

android - Armv6 + ffmpeg + android = sigill(堆)

android - 我的 Android 应用程序使用哪些 NFC 标签有关系吗?

android - 向下滑动刷新 Material Design

java - Gson:使用另一个对象的列表序列化对象

android - 开发服务器返回错误代码 403 native react

java - 有没有办法将表行保存到 Firebase 中?实时还是 Firestore?

java - Android Studio OpenCV 示例

android - HTML 下拉菜单在 Android Lollipop 中显示为空

java - 如何在 X 秒后消除 Google Glass 中的静态卡?