Android property使用
介绍: Property 变量是android的系统属性,在平常开发时候非常便利,添加了之后就好像给了个全局变量,用来区分流程分支、添加功能、android各层直接交互、记录数据、绕开SElinux执行自定义添加的可执行程序等等都是非常好用的。
如何使用:
1. 在java应用里设置属性(暂时未用过):
import android.os.SystemProperties;
SystemProperties.set("persist.sv.debug",”hello_data”);
在java里取得属性:
String vmHeapSize = SystemProperties.get("dalvik.vm.heapgrowthlimit", "24m");
2. 在native C/C++中设置属性:
#include "cutils/properties.h"
property_set("persist.sv.debug", "hello_data");
在C中取得属性:
char encrypted_state[32];
property_get("persist.sv.debug", encrypted_state, "");
最后一个参数是默认值。
3. 在rc文件中使用property,app直接使用系统属性打开应用,在调试串口直接设置系统属性打开应用。这样的写法也可以绕过selinux
service testService /vendor/bin/test
user root
group root
seclabel u:r:evs_app:s0
disabled
oneshot
on property:test.up_enable=1
start testService
on property:test.up_enable=0
stop testService
系统属性的存储
这就涉及到property机制的详细原理了。这篇博客中介绍得非常深入理解property
本文仅记录平常多留意的内容。
在启动中会依次加载:
以下路径的记录的系统属性
/default.prop
/system/build.prop
/system/default.prop
/data/local.prop
/data/property/* #在这里记录了很多persist.的系统的一份拷贝。
persist也指代着能实现关机记忆的效果。
ro指代着只读系统属性
net标识着网络使用到的系统属性,当设置之后,需要设置net.change属性更新值。
usb 也有着许多设置adb,carplay,usb限制等系统属性