2

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

4

2 回答 2

6

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

以下是“ Android 属性系统”文章中的引述(如果您想了解 Android 属性的工作原理,建议您通读一遍):

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

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

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

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

于 2012-10-03T12:47:13.703 回答
3

这些不是 SDK API 的一部分。

于 2011-03-10T05:46:08.137 回答