如何在/init.rc中创建服务?

时间:2019-04-03 01:12:32

标签: android android-source selinux

按照this post中给出的示例,我将这些行添加到/init.rc中:

application.ios.addNotificationObserver(UIKeyboardWillChangeFrameNotification, function (notification) {
let hght = notification.userInfo.valueForKey(UIKeyboardFrameEndUserInfoKey).CGRectValue.size.height;
})

这个/system/bin/bc_handler.sh:

on property:dev.bootcomplete=1
    start boot_handler

service boot_handler /system/bin/bc_handler.sh
    class main
    user root
    group root
    disabled
    oneshot

我正在为模拟器构建Android 8.0。当系统启动时,我可以看到脚本没有运行,并且在日志中可以看到此消息:

#!/system/bin/sh
echo hi > /data/local/hi.txt

我尝试将服务更改为以下形式:

[  217.280853] init: service boot_handler does not have a SELinux domain defined

现在错误是

service boot_handler /system/bin/sh /system/bin/bc_handler.sh
    class main
    user root
    group root
    disabled
    oneshot
    seclabel u:r:shell:s0

是否有关于如何在SELinux下向Android添加新服务的文档?或有关如何在Android上禁用SELinux的文档?我已经搜寻了几个小时,发现的所有信息似乎都已过时。

1 个答案:

答案 0 :(得分:1)

您可以通过在运行的平台上设置许可模式来禁用SELinux

在宽松模式下,selinux仅转储警告消息

默认情况下,它处于强制模式,在该模式下,任何SELinux违规行为都将被拒绝。


要添加服务,应在file_context中添加文件上下文,并为服务编写一个.te文件

Here是一个基本示例,您可以深入了解SELinux