1、vendor/qcom/proprietary/qrdplus/Extension/config/copy_apps.sh
1 | #!/system/bin/sh |
2、同目录下的Android.mk实现把脚本复制到system/bin
出现的问题,编译不通过,原因分析:
system/bin这个目录可能还不存在,先创建,然后cp的时候加个/
1 |
|
3、在init.target.rc添加以下服务,路径device/qcom/msm8953_64/init.target.rc
1 | service copy_apps /system/bin/sh /system/bin/copy_apps.sh |
4.device/qcom/sepolicy/common/file_contexts 添加如下语句
1 | /system/bin/copy_apps.sh u:object_r:copy_apps_exec:s0 |
5、添加SELinux规则,device/qcom/sepolicy/common/copy_apps.te
1 | #需要为新增的进程增加域、执行权限 |
修改sepolicy后编译出现‘Error while expanding policy’
在系统中添加某个“*.te”后,可能会出现下面的错误
1 | libsepol.report_failure: neverallow on line 263 of system/sepolicy/domain.te (or line 9133 of policy.conf) violated by allow xx device:chr_file { read write open }; |
这是因为在“system/sepolicy/domain.te” 添加了一些neverallow rules,导致编译检查的时候出现错误
1 | # Do not allow any domain other than init or recovery to create unlabeled files. |
只需要根据错误的提示,在system/sepolicy/domain.te找到对应的neverallow规则修改即可,我编译出现error的是allow xx device:chr_file { read write open };
只需要在下面的规则中,去掉我们添加的xx.te即可,在neverallow后的第一个‘{}’里 利用“-xx”,排除某个,即不应有此规则
1 | # Don't allow raw read/write/open access to generic devices. |
在编译的时候出现3个位置neverallow的错误,在对应的位置上添加 -copy_apps,
下面是其中一个添加位置的地方。
1 | neverallow { |
以上方法最终没有通过,应该是可以的,把上面的问题改一下应该就可以。
最终使用的方法
这种方法最简单,直接在设备上验证也能通过。主要是设备上没有开启SELinux规则,如果开启,应该也需要上面那种方法的配置。暂时不用。
1 | /system/etc/init/目录里的.rc文件里 |
文件内容如下:
1 | service bootanim /system/bin/bootanimation |
源码目录在:
1 | frameworks/base/cmds/bootanimation/bootanim.rc |