美文网首页
Android 8.1 添加系统服务无法开启的问题-selinu

Android 8.1 添加系统服务无法开启的问题-selinu

作者: Hemsl | 来源:发表于2021-01-27 15:03 被阅读0次

    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
    
    

    5.编译系统,刷机、重启机器,服务就可以被执行到,而不会再有权限问题。

    相关文章

      网友评论

          本文标题:Android 8.1 添加系统服务无法开启的问题-selinu

          本文链接:https://www.haomeiwen.com/subject/yckazktx.html