关于系统属性

发布于 2024-10-21 11:21:41 字数 180 浏览 6 评论 0原文

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

I know how to access the Android system properties from the application layer.
In framework layer android.os.SystemProperties class take the responsibility to
get all the properties. But internally it calls some C code for getting
the properties like native_get(key,value).
Anyone please tell me which file is basically referred in the C code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧街凉风 2024-10-28 11:21:41

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

以下是“Android 属性系统”文章中的引用(如果您想了解 Android 属性的工作原理,我建议您阅读全部内容):

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

<前><代码>/default.prop
/系统/build.prop
/系统/默认.prop
/data/local.prop

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

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

Native code for that methods located in the file android_os_SystemProperties.cpp. It delegates them to the Bionic libc library /bionic/libc/bionic/system_properties.c which reads property value from the shared memory.

Here is the quote from the "Android property system" article (I suggest you to read it all if you wish to understand how Android properties work):

init process will load properties from following files:

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

The next step is start property service. In this step, a unix domain socket server is created. This socket's pathname is "/dev/socket/property_service" which is well known to other client processes.
Finally, init process calls poll to wait for connect event on the socket.

On the consumer side, when it initializes libc (bionic/libc/bionic/libc_common.c __libc_init_common function). It will retrieve the fd and size from environment variable, and map the shared memory into its own space (bionic/libc/bionic/system_properties.c __system_properties_init function). After that, libcutils can read property just as normal memory for the consumer.

默嘫て 2024-10-28 11:21:41

这些不是 SDK API 的一部分。

These are not part of the SDK APIs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文