1、最近客户提了一个需求,说要在user版本上面切分辨率,默认屏幕分辨率是2.5 k 执行adb shell指令之后变成 4k 然后adb shell wm size可以查看
2、一开始我能想到就是在文件节点添加权限,这里不管是mtk还是qcom(高通平台)或者其他的,我首先能想到在device/目录下 init.xxx.rc文件中onboot添加对应文件节点权限
3、于是我怀着满怀的信心,大哥这让我怎么玩?完全不给活路吗?
4、而且执行完 之后都是下面这些日志
5、反正提示没有权限,哪到底应该添加什么权限?根据某个网友回答你可能要拿userdebug去验证下 avc一些相关权限,其实我也描述不是很清楚,反正就是需要添加类似于android一样权限,比如像android 读写权限 等等,有需要了解可以自己百度去查下哈,这里不再赘述。
6、于是我又编译一个userdebug版本 然后执行我动态添加
7、 于是在adb 下面执行 adb shell setprop debug.sys.display 3 /4
8、好了现在userdebug可以了,于是我又自信满满的 编译user版本。然后于是又出现下面一幕
9、对于搞系统不久的我来说,我真心看的不是很懂,于是网上搜了下。然后请教了一下某aosp大佬,于是他们这个就是selinux权限问题,加上就ok,顺着这个思路我去system/sepolicy/private/目前去找 这个里面有很多te文件比如nfcte,initte,于是我看着上面日志也有init,然后。尝试在init.te文件中添加
allow init debugfs:file r file perms
allow init debugfs:file w file perms;
10、但是看起来不是很对劲,于是在public也找到了对应的。加上,在大佬鼓励下我开始编译,然后今天同事到公司 早上远程验证一把,结果如下。
11、大功告成 ,但是reboot那些因为目前是 Android8.1可能不支持通过system/bin目录去执行reboot重启指令,考虑用代码去实现。
总结一下:
1、对于linux文件节点读写权限了解
2、了解对于init.rc,init.qcom.rc,init.target.rc文件 等等 不知道可以自行百度一下
3、对于Selinux权限了解要看log 了解AVC相关一些selinux权限东西
4、要有耐心调试
5、不知道可以请教大佬们说不定思路打开了。格局也打开了。
转载请注明出处,谢谢!
Android高通8.1 Selinux问题_KdanMin的博客-CSDN博客