2011-03-10 117 views
2

我知道如何从应用程序层访问Android系统属性。
在框架层android.os.SystemProperties类中负责 获取所有属性。但在内部,它调用一些C代码来获取 的属性,如native_get(key,value)
任何人都请告诉我哪个文件基本上是在C代码中引用的?关于系统属性

回答

3

这些不是SDK API的一部分。

5

该方法的原生代码位于文件android_os_SystemProperties.cpp中。它将它们委托给仿生libc库/bionic/libc/bionic/system_properties.c,它从共享内存中读取属性值。

这里是从“Android property system”文章引用(我建议你阅读这一切,如果你想了解性能如何Android的工作):

init进程将以下文件加载性能:

/default.prop 
/system/build.prop 
/system/default.prop 
/data/local.prop 

下一步是启动属性服务。在这一步中,创建一个unix域套接字服务器。此套接字的路径名为"/dev/socket/property_service",这是其他客户端进程所熟知的。
最后,init进程调用轮询来等待套接字上的连接事件。

在消费者方面,它初始化libc时(bionic/libc/bionic/libc_common.c __libc_init_common function)。它将从环境变量中检索fd和size,并将共享内存映射到它自己的空间(bionic/libc/bionic/system_properties.c __system_properties_init function)。在那之后,libcutils可以像消费者的正常内存一样读取属性。