Android 添加在init.rc中配置系统服务后,会出现无法启动的问题,通过logcat -b all 可以看到selniux权限的原因。
下面介绍一下如何完整地添加一个系统服务:
1. 增加一个系统服务,并且在post-fs-data(改变/data目录以及它的子目录的访问权限)的时候启动服务:
...
on post-fs-data
start keep_alive
...
service keep_alive /vendor/bin/keep_app_alive.sh
class core
user root
group root
disabled
2. device/rockchip/rk3288/device.mk中增加服务执行的脚本:
PRODUCT_COPY_FILES += \
device/rockchip/rk3288/keep_app_alive.sh:vendor/bin/keep_app_alive.sh
3.配置系统selinux权限,添加文件device/rockchip/rk3288/sepolicy/keep_alive.te,文件内容
type keep_alive, domain;
type keep_alive_exec, exec_type, vendor_file_type,file_type;
init_daemon_domain(keep_alive)
allow keep_alive vendor_shell_exec:file { entrypoint };
4.device/rockchip/common/sepolicy/file_contexts中添加:
# for keep-live
/vendor/bin/keep_app_alive.sh u:object_r:keep_alive_exec:s0
网友评论