关于系统属性

Raj*_*Raj 2 android system-properties android-ndk

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

Ido*_*lon 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
Run Code Online (Sandbox Code Playgroud)

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

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