在Android init.rc中执行守护程序



我正试图在Nexus 5启动时执行一个守护进程。这是一个从c++中的源代码构建的守护进程。但每当我在Nexus 5设备上构建AOSP并刷新图像时,守护进程都不会在后台运行。我将这段代码添加到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

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

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

service pollingclient /system/bin/sh logwrapper
    class late_start
    user root
    group root
    oneshot
on property:dev.bootcomplete=1
    start pollingclient

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

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

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

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

最新更新