因为selinux权限问题一般会在user版本出现,但我们在userdebug版本通过以下方式可以验证
1、第一步先确定问题是否由selinux权限问题引起 通过命令: adb shell getenforce //查看当前SePolicy权限状态(Enforcing 表示打开 Permissive表示关闭)userdebug版本处于permissive关闭状态 settenforce 1 //更改状态到Enforcing,0表示Permissive 进行测试,如果此时问题会出现,那么就是selinux权限问题
2、解决方法 这是一个selinux权限问题,我们只关注denied{} 、scontext 、tcontext 和 tclass 四个关键字就可以
denied{}括号内的内容表示被拒的权限动作
scontext的值表示需要在哪个te文件添加
tcontext 表示需要赋予权限的目标
tclass 表示权限问题的类型
这个问题的修改方式是在system_app.te文件添加如下代码:allow system_app sysfs_thermal:dir search;
注意:有时在Enforcing模式时不能看到所有缺少的权限日志,例如: 这个日志由于FileNotFoundException问题导致程序不会继续执行到代码终点,所以没有执行的代码所缺少的权限日志就不能得到,但是在Permissive模式所有权限问题会打印出来,所以建议抓log在Permissive模式下或者两种模式都抓