- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
android系统属性
网上有一篇文章介绍了Android的属性系统(/tekkamanitachi/archive/2009/06/18/4280982.aspx),我现在对其进行补充:
1. android现在好像只有/ p,/system/p两个文件,别的两个文件找不到
2. /data/property下有4个prop文件:persist.sys.timezone,persist.sys.language,persist.sys.country,persist.sys.localevar,里面保存着属性名称以“persist.”开头的属性值。
3. libcutils的源码位于system\core\libcutils\下面,获取和设置属性的代码在properties.c里面,读取属性通过读共享内存得到,设置属性通过发送请求到property_service进行设置。
4. 相关的函数有property_set,property_get,property_list。
5. 属性系统的初始化通过__system_properties_init函数完成,__system_properties_init函数代码如下:
view plaincopy to clipboardprint?
01.int __system_properties_init(void)
02.{
03.prop_area *pa;
04.int s, fd;
05.unsigned sz;
06.char *env;
07.if(__system_property_area__ != ((void*) dummy_props)) {
08.return 0;
09.}
10.env = getenv(ANDROID_PROPERTY_WORKSPACE);
11.if (!env) {
12.return -1;
13.}
14.fd = atoi(env);
15.env = strchr(env, ,);
16.if (!env) {
17.return -1;
18.}
19.sz = atoi(env + 1);
20.pa = mmap(0, sz, PROT_READ, MAP_SHARED, fd, 0);
21.if(pa == MAP_FAILED) {
22.return -1;
23.}
24.if((pa-magic != PROP_AREA_MAGIC) || (pa-version != PROP_AREA_VERSION)) {
25.munmap(pa, sz);
26.return -1;
27.}
28.__system_property_area__ = pa;
29.return 0;
30.}
int __system_properties_init(void)
{
prop_area *pa;
int s, fd;
unsigned sz;
char *env;
if(__system_property_area__ != ((void*) dummy_props)) {
return 0;
}
env = getenv(ANDROID_PROPERTY_WORKSPACE);
if (!env) {
return -1;
}
fd = atoi(env);
env = strchr(env, ,);
if (!env) {
return -1;
}
sz = atoi(env + 1);
pa = mmap(0, sz, PROT_READ, MAP_SHARED, fd, 0);
if(pa == MAP_FAILED) {
return -1;
}
if((pa-magic != PROP_AREA_MAGIC) || (pa-version != PROP_AREA_VERSION)) {
munmap(pa, sz);
return -1;
}
__system_property_area__ = pa;
return 0;
}
可以看到首先从环境变量里面获取ANDROID_PROPERTY_WORKSPACE,ANDROID_PROPERTY_WORKSPACE的值为如下形式:ANDROID_PROPERTY_WORKSPACE=9,32768。然后获取共享内存的文件句柄和长度,最后对共享内存进行检查并设置全局变量__system_property_area__的值,property_get就是从__system_property_area__
您可能关注的文档
最近下载
- 西门子 go topCT 中文版.pdf VIP
- 复合材料【全套课件】.ppt VIP
- 复合材料 第八章 先进复合材料.ppt VIP
- 人教版八年级物理第九单元《压强》测试题及答案.doc VIP
- 《复合材料学》全套教学课件.pptx
- 复合材料复合材料导论.ppt VIP
- 2025年闽教版(2024)小学英语四年级上册(全册)教学设计(附目录P123).docx
- 冠心病的介绍与治疗PPT.pptx VIP
- 2025云南昆明巫家坝建设发展有限责任公司及下属公司第三季度招聘23人笔试参考题库附答案解析.docx VIP
- 2.2.3 气候——特征和影响因素(课件)八年级地理上册(人教版).pptx VIP
文档评论(0)