1. 尝试如下操作:
adb root
adb shell setenforce 0 // 不检查SELinux相关的内容
然后尝试代码是否可以运行。如果可以运行即可确认是SELinux权限的问题。
2. 确认了问题之后,就需要解决问题。
关于SELinux权限,在/device/qcom/sepolicy目录下有很多.te文件可以修改。
例如audioserver的权限文件就在: /device/qcom/sepolicy/vendor/common/audioserver.te中。
了解了这些之后,再开始debug代码。
例如,报错如下:
log <36>[ 56.866489] type=1400 audit(466.859:21): avc: denied { write } for pid=399 comm="hal-server" name="enable" dev="sysfs" ino=23636
scontext=u:r:hal-server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
则需要在hal-server.te下添加:
allow hal-server sysfs:file write;
添加之后重新编译boot.img,然后flash进去即可。
如果还有其他的权限问题,用上面的方法一一添加即可。