Android Systemproperties Android系统属性
来源:互联网 发布:淘宝宝贝主图尺寸大小 编辑:程序博客网 时间:2024/05/17 23:17
- 前言
- Android系统属性的特性
- Android系统属性的通用配置
- Android系统属性的使用
- Next
前言
我们在Android开发中常常会用到一些用于控制我们应用/系统特性的方法。例如:通过标志位、通过系统属性、通过Android版本、通过系统Settings、通过系统级别的资源等等。我们这里着重介绍一下Android系统属性。
Android系统属性的特性
- 大部分属性本次开机有效
- ro开头的属性只能被设置一次
- persist开头的属性设置之后是被保存在存储空间中的,重启之后,仍然生效//
- 不同的系统属性属于不同的用户组,处在当前用户组的进程不能设置属于其他用户组的系统属性.
- 总的系统属性所占用的空间是有限制的 bionic/libc/include/sys/_system_properites.h
#define PA_SIZE (128*1024)
- 设置系统属性的权限是没有开放给第三方应用的,即就是说设置系统属性的接口是隐藏的。当然你也可以通过NDK的方式来访问
- 由系统加载的.prop文件路径定义如下
#define PROP_SERVICE_NAME "property_service" #define PROP_PATH_RAMDISK_DEFAULT "/default.prop" #define PROP_PATH_SYSTEM_BUILD "/system/build.prop" #define PROP_PATH_SYSTEM_DEFAULT "/system/default.prop" #define PROP_PATH_LOCAL_OVERRIDE "/data/local.prop"
- persist开头的属性,会被存储在#define PERSISTENT_PROPERTY_DIR “/data/property”“
Android系统属性的通用配置
system/core/include/private/android_filesystem_config.h
#define AID_ROOT 0 /* traditional unix root user */#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 */#define AID_ADB 1011 /* android debug bridge (adbd) */#define AID_INSTALL 1012 /* group for installing packages */#define AID_MEDIA 1013 /* mediaserver process */#define AID_DHCP 1014 /* dhcp client */#define AID_SDCARD_RW 1015 /* external storage write access */#define AID_VPN 1016 /* vpn system */#define AID_KEYSTORE 1017 /* keystore subsystem */#define AID_USB 1018 /* USB devices */#define AID_DRM 1019 /* DRM server */#define AID_MDNSR 1020 /* MulticastDNSResponder (service discovery) */#define AID_GPS 1021 /* GPS daemon */
system/core/init/property_service.c
/* White list of permissions for setting property services. */struct { const char *prefix; unsigned int uid; unsigned int gid;} property_perms[] = { { "net.rmnet0.", AID_RADIO, 0 }, { "net.lte", 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 }, { "gps.", AID_GPS, 0 }, { "bluetooth.", AID_BLUETOOTH, 0 }, { "dhcp.", AID_SYSTEM, 0 }, { "dhcp.", AID_DHCP, 0 }, { "debug.", AID_SYSTEM, 0 }, { "debug.", AID_SHELL, 0 }, { "log.", AID_SHELL, 0 }, { "service.adb.root", AID_SHELL, 0 }, { "service.adb.tcp.port", AID_SHELL, 0 }, { "persist.logd.size",AID_SYSTEM, 0 }, { "persist.sys.", AID_SYSTEM, 0 }, { "persist.service.", AID_SYSTEM, 0 }, { "persist.security.", AID_SYSTEM, 0 }, { "persist.gps.", AID_GPS, 0 }, //...... { NULL, 0, 0 }};
Android系统属性的使用
Systemproperties类在android.os下,但这个类是隐藏的。因此对于独立的第三方APP来说是无法直接调用的,当然你可以通过反射来使用。用JNI的方式,可以绕过Systemproperties这个类,直接本地调用来实现创建、获取及修改系统属性。
创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),需要注意的是android属性的名称是有一定的格式要求的,如下:前缀必须用system\core\init\property_service.c中定义的前缀,进行系统属性设置的程序也必须有system或root权限,
如何将android程序的权限提升到system权限?方法是这样的:
- 在AndroidManifest.xml中,在manifest加入android:sharedUserId=”android.uid.system”
- 在Android.mk中,將LOCAL_CERTIFICATE := XXX修改成LOCAL_CERTIFICATE :=platform
Next
接下来将着重关注Android 的系统设置,以及针对系统属性进行深入的解析。
0 0
- Android 属性系统(SystemProperties)
- Android Systemproperties Android系统属性
- Android系统属性SystemProperties分析
- Android 系统属性 SystemProperties 分析
- Android系统属性SystemProperties分析
- Android SystemProperties 系统属性分析
- android设置系统属性SystemProperties
- Android系统属性SystemProperties分析 .
- Android系统属性SystemProperties…
- Android SystemProperties系统属性分析
- Android系统属性SystemProperties分析
- Android系统属性SystemProperties分析
- 浅析Android系统属性SystemProperties
- 浅析Android系统属性SystemProperties
- Android SystemProperties系统属性详解
- Android SystemProperties系统属性详解
- Android 的系统属性(SystemProperties)设置分析
- Android 的系统属性(SystemProperties)设置分析
- Oracle 11g 数据类型
- warning: directory not found for option
- int argc, char *argv[] 的使用
- 关于即时通讯的一点记录
- chmod()函数和fchmod()函数,open()函数和creat()函数,close()函数,umask命令
- Android Systemproperties Android系统属性
- View的绘制流程
- shiro配置
- 死锁的原因
- Android如何避免OOM总结
- Mac系统下利用ADB命令连接android手机并进行文件操作
- Watch App 与 iOS App 之间进行数据共享
- man 命令的使用,linux根分区详解!
- 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?