property是android常用的一个TOOL(可以理解为TOOL),使用起来非常方便,不管是Java层还是c++层,都可以使用property。
property_perms[] = {
{ "ril.", AID_RADIO, 0 },
{ "gsm.", AID_RADIO, 0 },
{ "persist.radio", AID_RADIO, 0 },
{ "net.dns", AID_RADIO, 0 },
{ "sys.usb.config", AID_RADIO, 0 },
{ "net.", AID_SYSTEM, 0 },
{ "dev.", AID_SYSTEM, 0 },
{ "runtime.", AID_SYSTEM, 0 },
{ "hw.", AID_SYSTEM, 0 },
{ "sys.", AID_SYSTEM, 0 },
{ "sys.powerctl", AID_SHELL, 0 },
{ "service.", AID_SYSTEM, 0 },
{ "wlan.", AID_SYSTEM, 0 },
property根据AID不同,只能操作指定前缀的属性。比如gsm.* 只能是AID_RADIO process可以set & get,其他USER则无法设置此前缀的property。
#define AID_SYSTEM 1000 /* system server */
#define AID_RADIO 1001 /* telephony subsystem, RIL */
#define AID_BLUETOOTH 1002 /* bluetooth subsystem */
#define AID_GRAPHICS 1003 /* graphics devices */
#define AID_INPUT 1004 /* input devices */
#define AID_AUDIO 1005 /* audio devices */
#define AID_CAMERA 1006 /* camera devices */
#define AID_LOG 1007 /* log devices */
#define AID_COMPASS 1008 /* compass device */
#define AID_MOUNT 1009 /* mountd socket */
#define AID_WIFI 1010 /* wifi subsystem */
通过busybox ps可以查看进程的UID:
PID USER TIME COMMAND
1741 10004 0:00 {d.process.media} android.process.media
1804 10011 0:01 {ndroid.systemui} com.android.systemui
1987 10005 0:00 {externalstorage} com.android.externalstorage
2083 10038 0:00 {utmethod.pinyin} com.android.inputmethod.pinyin
2176 1001 0:00 {m.android.phone} com.android.phone
2195 1000 0:01 {droid.launcher3} com.android.launcher3
SystemProperties.set("jacky.debug.prop","1");
SystemProperties.set("log.jacky.prop","1");
SystemProperties.set("gsm.jacky.prop","1");
get到结果:
[gsm.jacky.prop]: [1]
[jacky.debug.prop]: [1]
[log.jacky.prop]: [1]
gsm和log前缀对于kikat4.4,UID=1000的process是无法设置的,但是在android 5.1平台可以设置,说明android 5.X后已经没有对property前缀的限制了。
net. u:object_r:system_prop:s0
dev. u:object_r:system_prop:s0
runtime. u:object_r:system_prop:s0
hw. u:object_r:system_prop:s0
sys. u:object_r:system_prop:s0
sys.powerctl u:object_r:powerctl_prop:s0
service. u:object_r:system_prop:s0
wlan. u:object_r:system_prop:s0
dhcp. u:object_r:dhcp_prop:s0
dhcp.bt-pan.result u:object_r:pan_result_prop:s0
bluetooth. u:object_r:bluetooth_prop:s0
类似以前版本,不同的前缀,对应不同的AID,这里对应不同的Scontext。
ms.media. u:object_r:audio_prop:s0
ms.dvfs. u:object_r:audio_prop:s0