版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、android 的系统属性 (systemproperties)分析bobs blo.Android的系统属性 (SystemProperties)分析by bob, 2,184 views以下分析以android 4.03 为基础前言Android 的系统属性相当于windows 的注册表,由 key 和 value组成,且都是核心系统的一个基本机制。相对于windows的注册表,Android的系统属性要简单一些,它没有windows注册表的树状结构,而只是一个列表,也就是说没有父子关系。 value 有 string , int , long,boolean,但是设置只能通过字符串方式。
2、Android的系统属性包括两部分:文件保存的持久属性和每次开机导入的cache 属性。前者主要保存在下面几个文件中(目录下): /p/system/p/system/p/data/p/data/property 目录下的所有presist 属性 (以 presist.开头 )后者则通过API 方式使用。一、接口1. JAVA 层接口:包名: android.os类名: SystemProperties,为隐藏类接口:public static String get(String key, String def)p
3、ublic static int getInt(String key, int def)public static long getLong(String key, long def)public static boolean getBoolean(String key, boolean def)public static void set(String key, String val)其 key 长度不能超过 31 字, val 不超过 91 字文件:frameworks/base/core/java/android/os/SystemProperties.java2.JNI 接口在 and
4、roid_os_SystemProperties.cpp 定义,在frameworks/base/core/jni/AndroidRuntime.cpp中注册 JNI3.本地接口接口:int property_get(const char *key, char *value, const char *default_value)/* property_set: returns 0 on success, < 0 on failure*/int property_set(const char *key, const char *value)int property_list(voi
5、d (*propfn)(const char *key, const char *value, void *cookie), void *cookie)文件:system/core/include/cutils/properties.hsystem/core/libcutils/properties.c4. 底层 bionic 内部接口除非想修改系统属性机制,可以分析一下int _system_property_get(const char *name, char *value);int _system_property_set(const char *key, const char *val
6、ue); const prop_info *_system_property_find(const char *name); int _system_property_read(const prop_info *pi, char *name,char *value);const prop_info *_system_property_find_nth(unsigned n);文件:bionic/libc/include/sys/system_properties.h bionic/libc/include/sys/_system_properties.h bionic/libc/bionic/
7、system_properties.c5. init.rc 接口原始 rc 文件有system/core/rootdir/init.rcdevice/vendor/platformname/init.devicename.rc编译后在跑到out/target/product/platformname/root/ 下做成 image 后在 out/target/product/platformname/ramdisk.img ,有可能由于平台不一样,文件名不一样设备运行后就是在根目录下的一些init*.rc 文件在 init.rc 我们可以设置属性,监听属性变化setprop key value
8、on property:key=valuedo_your_work实现:property 的处理在 init 进程中,相关文件system/core/init/property_service.csystem/core/init/property_service.h入口函数 start_property_service 及 property_init 、load_persist_props1. 通讯机制:property_set 有两套实现, 一套接口 3:本地接口的实现,会调用接口 4:中的_system_property_set,_system_property_set通过本地 SOCKE
9、T:“ /dev/socket/property_service ” 与 init进程中 properties 服务通讯。在 init 进程的 system/core/init/property_service.c(h) 代码中有另一套 property_set 实现,仅用于 init 进程。2. 安全实现:设置 key 的 value 时,需要作鉴权,根据设置程序所在进程的 fd 获知 uid 值,比如 system server 进程可以设置 net 打头的 key,不可以设置 gsm 打头的 key,相关的定义如下:权限定义system/core/include/private/andr
10、oid_filesystem_config.h#define AID_ROOT 0 /* traditional unix root user */#define AID_SYSTEM1000 /* system server */#define AID_RADIO1001/* telephony subsystem,RIL */#define AID_DHCP1014/* dhcp client */#define AID_SHELL2000 /* adb and debug shelluser */#define AID_CACHE2001 /* cache access */#defin
11、e AID_APP10000 /* first app user */属性权限表在system/core/init/property_service.c 定义,采用白名单方式struct const char *prefix;unsigned int uid;unsigned int gid; property_perms = "net.rmnet0.",AID_RADIO,0 , "net.gprs.",AID_RADIO,0 , "net.ppp",AID_RADIO,0 , "net.qmi",AID_RAD
12、IO,0 , "net.lte",AID_RADIO,0 , "net.cdma",AID_RADIO,0 , "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."
13、;,AID_SYSTEM,0 , "runtime.",AID_SYSTEM,0 , "hw.",AID_SYSTEM,0 , "sys.",AID_SYSTEM,0 , "service.",AID_SYSTEM,0 , "wlan.",AID_SYSTEM,0 , "dhcp.",AID_SYSTEM,0 , "dhcp.",AID_DHCP,0 , "debug.",AID_SHELL,0 , "log.",A
14、ID_SHELL,0 , "service.adb.root", AID_SHELL,0 , "service.adb.tcp.port", AID_SHELL,0 , "persist.sys.",AID_SYSTEM,0 , "persist.service.", AID_SYSTEM,0 , "persist.security.", AID_SYSTEM,0 , NULL, 0, 0 ;通过 check_perms 函数来检查权限下面是服务控制权限struct const char *se
15、rvice;unsigned int uid;unsigned int gid; control_perms = "dumpstate",AID_SHELL, AID_LOG , "ril-daemon",AID_RADIO, AID_RADIO , NULL, 0, 0 ;通过 check_control_perms 函数来检查权限3. 监听变化在修改属性的时候,会通过函数property_changed通知init触发init.rc中的trigger 。4. 属性特殊处理:1. ctl.开头的属性是控制属性,用于控制系统的本地服务ctl.startc
16、tl.stopctl.restart使用语法ctl.xxxservicename:args2. ro.开头的属性不能被修改;3. net.开始的属性 (除 net.change 外 )设置,将引发net.change=key 的属性设置,被bionic/libc/netbsd/resolv/res_state.c 中的代码处理 (通过_system_property_find 函数 );4. persist.开始的属性,如果在 init.rc 和代码中设置,将会被写到 /data/property 目录下;related postAndroid调试技术使用GDB单步调试Android本地代码a
17、ndroid 4.0联系人分析查找匹配Android Audio分析android 2.3应用管理机制分析related postandroid services 一、简介service 是 android 应用 4 种组件之一,是没有界面的在后台运行的服务。service有两种形式1.启动的(Started)通过应用组件的接口startService()启动,服务启动后独立运行。2. 绑定的 (Bound) 通过应用组件的接口bindService() 启动,提供 CS 方式的进程间通讯,在所有绑定的组件解除绑定后,服务退出。这两种形式可以单独也可以同时存在于一个service 上。 .An
18、droid调试技术一、 JAVA 层单步调试参见“用eclipse单步调试 Laucher” 参见“用 eclipse 编译调试 adnroid 的 Browser ” 二、 Native 层单步调试 参见“使用 GDB 单步调试 Android 本地代码” 三、 JAVA 层堆栈打印 1. 在指定的函数内打印相关 java 调用Log.d(TAG ,Log.getStackTraceString(new.android 2.3应用管理机制分析分析目的为了分析内存不足时, android如何选择需要被杀死的应用的机制。改进以达到避免重要应用不被杀死。一、架构二、ActivityManagerService 中应用等级Android 应用优先级及内存限制Procss Priority Name ActivityManagerService.android 2.3启动分析init进程前言Android init进程作为android系统的第一个进程,有设置环境、启动各种android本地服务(不同于android service)、android
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF(石化)078-2023激光甲烷遥测仪校准规范
- 马鞍山师范高等专科学校《妇产科护理学》2025-2026学年期末试卷
- 宁德职业技术学院《科学技术与社会》2025-2026学年期末试卷
- 福建商学院《中医内科学》2025-2026学年期末试卷
- 中国医科大学《冷链物流》2025-2026学年期末试卷
- 集美大学诚毅学院《金融科技》2025-2026学年期末试卷
- 福建体育职业技术学院《数理经济学》2025-2026学年期末试卷
- 厦门东海职业技术学院《安全原理与评价》2025-2026学年期末试卷
- 福建理工大学《金融学概论》2025-2026学年期末试卷
- 中国矿业大学《管理会计概论》2025-2026学年期末试卷
- 期中考试模拟试卷(含答案) 2025~2026学年度人教版七年级下册地理
- 2025河北林业和草原局事业单位笔试试题及答案
- 黑龙江哈尔滨德强学校2025-2026学年度六年级(五四制)下学期阶段学情调研语文试题(含答案)
- 广东江西稳派智慧上进教育联考2026届高三年级3月二轮复习阶段检测政治+答案
- 2025-2026学年浙美版(新教材)小学美术二年级下册《我爱运动》教学课件
- 2026年商丘学院单招综合素质考试题库及答案详解(历年真题)
- 2025年大连职业技术学院单招职业技能考试试题及答案解析
- 既有线路基帮宽施工方案范本
- 追悼会主持稿及悼词范文集
- 2026年电工专业技能实操测试题目
- 天然气压缩机组培训课件
评论
0/150
提交评论