2022年android系统属性 .pdf

上传人:Che****ry 文档编号:27259983 上传时间:2022-07-23 格式:PDF 页数:8 大小:64.82KB
返回 下载 相关 举报
2022年android系统属性 .pdf_第1页
第1页 / 共8页
2022年android系统属性 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年android系统属性 .pdf》由会员分享,可在线阅读,更多相关《2022年android系统属性 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Android 的属性系统2011-04-10 17:42 每个属性都有一个名称和值,他们都是字符串格式。 属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。在系统初始化时, Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:device/system/init。“ init”守护进程将启动一个属性服务。属性服务在“ init”守护进程中运行。每一个客户端想要设置属性时,必须连接属性服务,再向其发送信息。属性服务将会在共享内存区中修改和创建属性。任何客户端想获

2、得属性信息,可以从共享内存直接读取。这提高了读取性能。客户端应用程序可以调用libcutils中的 API 函数以 GET/SET 属性信息。libcutils的源代码位于: device/libs/cutils。API 函数是:int property_get(const char *key, char *value, const char *default_value); int property_set(const char *key, const char *value); 而 libcutils又调用 libc 中的 _system_property_xxx 函数获得共享内存中的属性

3、。libc 的源代码位于:device/system/bionic。属性服务调用 libc 中的_system_property_init函数来初始化属性系统的共享内存。当启动属性服务时,将从以下文件中加载默认属性:/ default.prop /system/build.prop /system/default.prop /data/local.prop 属性将会以上述顺序加载。后加载的属性将覆盖原先的值。这些属性加载之后,最后加载的属性会被保持在/data/property中。特别属性如果属性名称以 “ro. ”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。如果属性名称以 “

4、persist.”开头,当设置这个属性时,其值也将写入/data/property。如果属性名称以 “net. ”开头,当设置这个属性时, “net.change ” 属性将会自动设置,以加入到最后修改的属性名。(这是很巧妙的。netresolve模块的使用这个属性来追踪在net.* 属性上的任何变化。)属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,与init 守护进程将解析 init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该

5、服务。这项服务的启动结果将会放入“ init.svc.“属性中 。客户端应用程序可以轮询那个属性值,以确定结果。Android toolbox程序Android toolbox程序提供了两个工具:setprop和 getprop获取和设置属性。其使用方法:getprop setprop Java 在 Java 应用程序可以使用System.getProperty()和 System.setProperty()函数获取和设置属性。Action 默认情况下,设置属性只会使init 守护程序写入共享内存,它不会执行任何脚本或二进制程序。但是,您可以将您的想要的实现的操作与init.rc中某个属性的变

6、化相关联.例如,在默认的 init.rc中有:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - # adbd on at boot in emulator on property:ro.kernel.qemu=1 start adbd on property:persist.service.adb.enable=1 start adbd on property:persist.service.adb.enable=0 stop a

7、dbd 这样,如果你设置persist.service.adb.enable为 1 ,init 守护程序就知道需要采取行动:开启adbd 服务。1. android现在好像只有 / default.prop,/system/build.prop两个文件,别的两个文件找不到2. /data/property下有 4 个 prop 文 件:persist.sys.timezone,persist.sys.language,persist.sys.country,persist.sys.localevar, 里面保存着属性名称以“persist.”开头的属性值。3. libcutils的源码位于下面

8、,获取和设置属性的代码在properties.c里面,读取属性通过读共享内存得到,设置属性通过发送请求到property_service进行设置。4. 相关的函数有 property_set,property_get,property_list。5. 属性系统的初始化通过 _system_properties_init函数完成, _system_properties_init函数代码如下:view plaincopy to clipboardprint?int _system_properties_init(void) prop_area *pa; int s, fd; unsigned sz

9、; 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

10、-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_

11、的值, property_get就是从_system_property_area_里 面读取的属性值。环境变量的初始化在init.c 的 service_start函数里面。6. /init.rc里面有设置属性的代码,例如:# Define the oom_adj values for the classes of processes that can be # killed by the kernel. These are used in ActivityManagerService. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -

12、- - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - setprop ro.FOREGROUND_APP_ADJ 0 setprop ro.VISIBLE_APP_ADJ 1 setprop ro.SECONDARY_SERVER_ADJ 2 setprop ro.HOME_APP_ADJ 4 setprop ro.HIDDEN_APP_MIN_ADJ 7 setprop ro.CONTENT_PROVIDER_ADJ 14 setprop ro.EMPTY_APP_ADJ 15 7. 通过 property_list可以枚举所有的属性,

13、下面是一段打印所有属性的代码。view plaincopy to clipboardprint?#include #include void print_prop(const char* key,const char* value,void* cookie) printf(key=%s,value=%sn,key,value); int main() property_list(print_prop,NULL); Android.mk文件:LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= list_prope

14、rty.cpp LOCAL_SHARED_LIBRARIES := libcutils libutils LOCAL_MODULE:= list_prop include $(BUILD_EXECUTABLE) include $(call all-makefiles-under,$(LOCAL_PATH) 所有的属性如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - key=ro.secure,value=0 key=ro.

15、allow.mock.location,value=1 key=ro.debuggable,value=1 key=persist.service.adb.enable,value=1 key=ro.kernel.qemu,value=1 key=ro.kernel.console,value=ttyS0 key=ro.kernel.android.checkjni,value=1 key=ro.kernel.android.qemud,value=ttyS1 key=ro.factorytest,value=0 key=ro.serialno,value= key=ro.bootmode,v

16、alue=unknown key=ro.baseband,value=unknown key=ro.carrier,value=unknown key=ro.bootloader,value=unknown key=ro.hardware,value=goldfish key=ro.revision,value=0 key=ro.build.id,value=CUPCAKE key=ro.build.display.id,value=sdk-eng 1.5 CUPCAKE 148875 test-keys key=ro.build.version.incremental,value=14887

17、5 key=ro.build.version.sdk,value=3 key=ro.build.version.release,value=1.5 key=ro.build.date,value=Thu May 14 17:29:49 PDT 2009 key=ro.build.date.utc,value=1242347389 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - key=ro.build.type,value=en

18、g key=ro.build.user,value=android-build key=ro.build.host,value=e- key=ro.build.tags,value=test-keys key=ro.product.model,value=sdk key=ro.product.brand,value=generic key=ro.product.name,value=sdk key=ro.product.device,value=generic key=ro.product.board,value= key=ro.product.manufacturer,value=unkno

19、wn key=ro.product.locale.language,value=en key=ro.product.locale.region,value=US key=ro.board.platform,value= key=ro.build.product,value=generic key=ro.build.description,value=sdk-eng 1.5 CUPCAKE 148875 test-keys key=ro.build.fingerprint,value=generic/sdk/generic/:1.5/CUPCAKE/148875:eng/test-keys ke

20、y=rild.libpath,value=/system/lib/libreference-ril.so key=rild.libargs,value=-d /dev/ttyS0 key=ro.config.notification_sound,value=F1_New_SMS.ogg key=xmpp.auto-presence,value=true key=ro.config.nocheckin,value=yes key=net.bt.name,value=Android key=net.change,value=net.gprs.local-ip 名师资料总结 - - -精品资料欢迎下

21、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - key=dalvik.vm.stack-trace-file,value=/data/anr/traces.txt key=persist.sys.timezone,value=GMT key=persist.sys.language,value=en key=persist.sys.country,value=US key=persist.sys.localevar,value= key=ro.FOREGROUND_

22、APP_ADJ,value=0 key=ro.VISIBLE_APP_ADJ,value=1 key=ro.SECONDARY_SERVER_ADJ,value=2 key=ro.HOME_APP_ADJ,value=4 key=ro.HIDDEN_APP_MIN_ADJ,value=7 key=ro.CONTENT_PROVIDER_ADJ,value=14 key=ro.EMPTY_APP_ADJ,value=15 key=ro.FOREGROUND_APP_MEM,value=1536 key=ro.VISIBLE_APP_MEM,value=2048 key=ro.SECONDARY_

23、SERVER_MEM,value=4096 key=ro.HOME_APP_MEM,value=4096 key=ro.HIDDEN_APP_MEM,value=5120 key=ro.CONTENT_PROVIDER_MEM,value=5632 key=ro.EMPTY_APP_MEM,value=6144 key=net.tcp.buffersize.default,value=4096,87380,110208,4096,16384,110208 key=net.tcp.buffersize.wifi,value=4095,87380,110208,4096,16384,110208

24、key=net.tcp.buffersize.umts,value=4094,87380,110208,4096,16384,110208 key=net.tcp.buffersize.edge,value=4093,26280,35040,4096,16384,35040 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - key=net.tcp.buffersize.gprs,value=4092,8760,11680,4096

25、,8760,11680 key=init.svc.console,value=running key=init.svc.servicemanager,value=running key=init.svc.vold,value=running key=init.svc.debuggerd,value=running key=init.svc.ril-daemon,value=running key=init.svc.zygote,value=running key=init.svc.media,value=running key=init.svc.installd,value=running k

26、ey=init.svc.flash_recovery,value=stopped key=init.svc.goldfish-setup,value=stopped key=init.svc.qemud,value=stopped key=init.svc.goldfish-logcat,value=stopped key=ARGH,value=ARGH key=net.eth0.dns1,value=10.0.2.3 key=net.gprs.local-ip,value=10.0.2.15 key=ro.radio.use-ppp,value=no key=status.battery.s

27、tate,value=Slow key=status.battery.level,value=5 key=status.battery.level_raw,value=50 key=status.battery.level_scale,value=9 key=ro.setupwizard.mode,value=EMULATOR key=.google.locationfeatures,value=1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - -

28、- - - - - key=init.svc.adbd,value=running key=pleted,value=1 key=hw.keyboards.65536.devname,value=qwerty2 key=sys.settings_secure_version,value=2 key=dev.bootcomplete,value=1 key=sys.settings_system_version,value=6 key=gsm.sim.operator.numeric,value= key=gsm.sim.operator.alpha,value= key=gsm.sim.operator.iso-country,value= key=gsm.sim.state,value=UNKNOWN key=adb.connected,value=1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁