【问题标题】:About system properties关于系统属性
【发布时间】:2011-03-10 04:55:31
【问题描述】:

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

【问题讨论】:

    标签: android android-ndk system-properties


    【解决方案1】:

    该方法的本地代码位于文件 android_os_SystemProperties.cpp 中。它将它们委托给 Bionic 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进程调用poll等待socket上的connect事件。

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

    【讨论】:

      【解决方案2】:

      这些不是 SDK API 的一部分。

      【讨论】:

        猜你喜欢
        • 2015-08-17
        • 1970-01-01
        • 1970-01-01
        • 2014-07-24
        • 1970-01-01
        • 1970-01-01
        • 2015-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多