属性系统服务在android源码根目录下的 system/core/init/property_service.cpp,查看代码发现源码中有对修改的属性值进行物理保存,如下第一个方框中的 int r1 = fsync(fd);
第二个方框是我添加的代码,重新open再进行fsync保存,
这是比较简单粗暴的方法,经过查看log,log如下:
Line 2644: <12>[ 37.875323] avc: denied {set} for property=persist.sys.wwd scontext=u:r:shell:s0 tcontext=u:object_r:system_prop:s0 tclass=property_service
问题真正根源是selinux权限问题,可以直接修改te文件来解决:在device\rockchip\common\sepolicy下的shell.te文件最后面添加
allow shell system_prop:property_service set;
重新make 编译烧录boot.img