`

failed to set system property

阅读更多
在App的mk文件设置了LOCAL_CERTIFICATE := platform和在
AndroidManifest.xml里有android:sharedUserId="android.uid.system"进行
SystemProperties.set("persist.env.test.enabled", String.valueOf(true));
报java.lang.RuntimeException: failed to set system property。


1.SystemProperties.set("persist.sys.env.fastdorm.enabled", String.valueOf(true));
执行成功,初步推断是属性命名有问题

2.adb shell setenforce 0 手动关闭SELinux执行可以成功。所"persist.env.test.enabled"的命名不符合SELinxu的安全上下文。

3.查看
\LINUX\android\system\sepolicy\private\property_contexts和\LINUX\android\device\qcom\sepolicy\common\property_contexts有对persist.sys.            u:object_r:system_prop:s0
的定义没有对persist.env的定义

4.persist.env.                    u:object_r:system_prop:s0
将这行添加到LINUX\android\device\qcom\sepolicy\common\property_contexts文件,重新编译make vendorimage
再执行SystemProperties.set("persist.env.test.enabled", String.valueOf(true));

5. 可以通过命令adb shell :
getprop查看手机上所有属性状态值。
或者 getprop init.svc.bootanim制定查看某个属性状态
使用setprop init.svc.bootanim start 设置某个属性的状态

//public static final int PROP_NAME_MAX = 31; O之前现在属性名字现在31个字符
    /**
     * Android O removed the property name length limit, but com.amazon.kindle 7.8.1.5
     * uses reflection to read this whenever text is selected (http://b/36095274).
     */
    public static final int PROP_NAME_MAX = Integer.MAX_VALUE;

public static final int PROP_VALUE_MAX = 91;



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics