1. SELinux Mode.
SELinux 分成两种模式, 即Permissve Mode(宽容模式), 和 Enfocing mode(强制模式).
Permissive Mode 只通过Audit System 记录LOG, 但不真正拦截访问.
Enforcing Mode 在打印LOG 的同时,还会真正的拦截访问.
通常在调试时,我们会启用Permissive Mode, 以便尽可能的发现多的问题, 然后一次修正. 在真正量产时使用Enforcing mode, 来保护系统.
2. 确认是否与SELinux 约束相关.
a. 将SELinux 调整到Permissive 模式测试.
将SELinux 模式调整到Permissive 模式,然后再测试确认是否与SELinux 约束相关.
ENG 版本:
adb shell setenforce 0
如果还能复现问题,则与SELinux 无关, 如果原本很容易复现, 而Permissive mode 不能再复现, 那么就可能关系比较大.
b. 查看LOG 中是否有标准的SELinux Policy Exception.
在Kernel LOG / Main Log 中查询关键字 "avc:" 看看是否有SELinux Policy Exception, 并进一步确认这个异常是否与当时的逻辑相关.
获取SELinux 权限
adb shell getenforce
针对ENG版本
设置
adb shell setenforce 0
查看
adb shell getenforce