Android7.1解决应用系统属性设置类SystemProperties导入问题

试了很多种方法,有说导入系统的framework.jar的,试过依然不行,最后确认可行的办法就是导入layoutlib.jar包。
1.在Sdk/platform/android-XX/data目录下找到layoutlib.jar包然后拷贝到android工程app/lib/目录下:
图1
然后右键选择Add Library,添加成功标志如下:图2
软件也会自动生成依赖 implementation files(‘libs\layoutlib.jar’),如果没有需要手动添加。
在这里插入图片描述
2.然后就是导入库和使用方法了!
在这里插入图片描述
在这里插入图片描述

import android.os.SystemProperties;
 SystemProperties.set("persist.env.××××.enable","true");

如果是做系统开发的话,还会有权限相关的报错需要修改,我们只需要根据报错增加相关的SElinux权限就可以了。报错如下:

 avc: denied { write } for name="property_service" dev="tmpfs" ino=14898 scontext=u:r:untrusted_app:s0:c512,c768 
 tcontext=u:object_r:property_socket:s0 tclass=sock_file permissive=0

根据avc报错解决相关权限:

allow untrusted_app property_socket:sock_file write;

另外还要在property_contexts(保存系统中所有属性的安全上下问题)中添加对应的属性:

persist.env.××××.enable u:object_r:default_prop:s0

在system_app.te中增加set权限:

allow system_app {
     ctl_default_prop
     fm_prop
     usf_prop
+    default_prop
 }:property_service set;

增加权限之后会编译报错;

libsepol.report_failure: neverallow on line 343 of system/sepolicy/domain.te (or line 9215 of policy.conf) violated by allow system_app default_prop:property_service { set };
libsepol.check_assertions: 1 neverallow failures occurred
Error while expanding policy
out/host/linux-x86/bin/checkpolicy:  loading policy configuration from out/target/product/msm8953_64/obj/ETC/sepolicy_intermediates/policy.conf
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] 错误 1

解决

343 neverallow { domain -init  -system_server -system_app} default_prop:property_service set;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值