解决原则是:缺什么权限补什么,一步一步补到没有avc denied为止。
解决权限问题需要修改的权限文件如下位置,以.te结尾
A:Android/device/mediatek/common/sepolicy/*.te
B:Android/external/sepolicy/*.te
其中,A是对B的overlay(覆盖),能在A修改的尽量在A修改,尽量避免修改B。
avc: denied { read } for pid=1213 comm=".app.homescreen" name="/" dev="mmcblk0p13" ino=2 scontext=u:r:system_app:s0 tcontext=u:object_r:unlabeled:s0 tclass=dir permissive=1
分析过程:
缺少什么权限: { read }权限,
谁缺少权限: scontext=u:r:system_app:s0
对哪个文件缺少权限:tcontext=u:object_r:unlabeled
什么类型的文件: tclass=dir
完整的意思:system_app进程对unlabeled类型的dir缺少read权限。
解决方法:
在common/sepolicy/system_app.te中添加:
allow system_app unlabeled:dir { read };
其他的avc: denied 问题同理。
2,
一些权限定义在 external/sepolicy/global_macros中。