您的位置:首页 > 移动开发 > Android开发

[RK3288][Android6.0] Android中的Properties

2017-08-31 17:14 183 查看
Platform: Rockchip

OS: Android 6.0

Kernel: 3.10.92

介绍:

系统通过init进程来管理properties.

Android系统可以通过properties来共享一些比较简单的字符串值。

文件分布:

Properties被分成若干个文件(这里指设备上):

/system/build.prop:

编译时产生,主要内容来自device下的system.prop

/default.prop:

默认的一些关键属性,例如虚拟机的内存配置:

dalvik.vm.image-dex2oat-Xms=64m
dalvik.vm.image-dex2oat-Xmx=64m


/data/property:

此目录下的properties在下一次重启后依然存在,都以persist打头:

root@rk3288:/data/property # ls
persist.sys.country
persist.sys.language


也就是说,设置了persist的property会被放到此目录下并且重启后不会丢失。

修改值:

系统有很多方法和地方可以修改,分静态和动态两种:

静态:

直接修改prop文件

例如本项目平台的文件是:

device/rockchip/rk3288/system.prop

修改编译生成prop的脚本

build/tools/buildinfo.sh

通过PRODUCT_PROPERTY_OVERRIDES变量

系统中的*.mk通过PRODUCT_PROPERTY_OVERRIDES属性,最后会变编译到prop文件中

动态:

init.rc/命令行/shell脚本中:

setprop <属性名> <值>

Java中:

SystemProperties.set();

set()声明如下:

public static void set(String key, String val);

C/C++中:

int property_set(const char* name, const char* value);

特殊的properties:

ro.* properties: 只读,只能修改一次。

persist.* properties: 前面有提到了,设置后就一直被保存下来了。

ctl.start/ctl.stop: 动态start/stop service. 例如开机动画时就会用到这个。

net.change:记录了每一次最新设置和更新的net.属性。例如net.bt.name有更新,那么属性服务就会自动更新net.change,将其值设置为net.bt.name。

参考:

Android 系统属性SystemProperty分析

Android SystemProperties.get()和System.getProperty()的区别
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: