Android的系统属性设置
1:如何引用
首先在对于Java应用程序,引用它的时候,我们发现SDK里面好像没有。HELP也看不见。Import 更是错误。其实,这是一个@HIDE的东西。只需要在Java Build Path,Library 里面添加Add Library,添加SDK的Layoutlib即可。这样我们就可以Import 进来了。
2:
Android 的系统属性包括两部分:文件保存的持久属性和每次开机导入的cache属性。前者主要保存在下面几个文件中:
bionic / libc / include / sys / _system_properties.h
后者则通过frameworks/base/core/java/android/os/SystemProperties.java的接口定义,
该接口类在初始化运行环境中注册对应的cpp接口android_os_SystemProperties.cpp,实际操作通过JNI调用的是cpp文件对应的接口:
frameworks/base/core/jni/AndroidRuntime.cpp
特别属性
如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。
如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。
在c++中就是对应JAVA的两个函数就是property_set, property_get,其实JAVA是通过JNI调用这两个函数的。
一个奇怪的现象:
android.os.SystemProperties.set("tc.test.config", "start");
不好意思,上面的这个东西会打印出来一个错误信息:
init: sys_prop: permission denied uid:10027 gid:10027 name:tc.test.config
应该是./system/core/init/init.c打印出来的。
如果改成
android.os.SystemProperties.set("tcc.test.config", "start");
这个就OK.
现象就是这样的。
我也很纳闷。