2011-03-10 120 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可以像消費者的正常內存一樣讀取屬性。