本文扼要解析一下build.prop是如何產生的。Android的build.prop檔案是在Android編譯時間刻收集的各類property(LCD density/說話/編譯時間候, etc.),編譯完成之後,檔案產生在out/target/product/<board>/system/目次下。在Android運行時刻可以經由過程property_get()[c/c++域] / SystemProperties_get*()[Java域]讀取這些屬性值。
凡是教師缺乏愛的處所,無論品德還是聰明都不克不及充沛地或地成長。
build.prop的產生是由make體系解析build/core/Makefile完成。
1) Makefile中起首定義各類變數,這鄙人一步履行時會用到。比如:
view plain
- ...
- PRODUCT_DEFAULT_LANGUAGE="¥(calldefault-locale-language,¥(PRODUCT_LOCALES))"
- PRODUCT_DEFAULT_REGION="¥(calldefault-locale-region,¥(PRODUCT_LOCALES))"
- ...
2) Makefile中調用build/tools/buildinfo.sh履行指令碼,並輸出到build.prop
Buildinfo.sh很簡單,只是echo一些屬性,比如:
view plain
- ...
- echo"ro.product.locale.language=¥PRODUCT_DEFAULT_LANGUAGE"
- echo"ro.product.locale.region=¥PRODUCT_DEFAULT_REGION"
- ...
而,ro.product.locale.language/ ro.product.locale.region就是些屬性,等號後面是值。
3) Makefile中直接把¥(TARGET_DEVICE_DIR)/system.prop的內容追加到build.prop中。
4) 收集ADDITIONAL_BUILD_PROPERTIES中的屬性,追加到build.prop中。
ADDITIONAL_BUILD_PROPERTIES又會收集PRODUCT_PROPERTY_OVERRIDES中定義的屬性
view plain
- ADDITIONAL_BUILD_PROPERTIES:=
- ¥(ADDITIONAL_BUILD_PROPERTIES)
- ¥(PRODUCT_PROPERTY_OVERRIDES)
經由過程build.prop產生過程的解析,可知哪裡可以批改原有的屬性或參加本身定義屬性,那就是2) buildinfo.sh; 3) system.prop; 4) ADDITIONAL_BUILD_PROPERTIES或PRODUCT_PROPERTY_OVERRIDES。不過小我建議改在system.prop或PRODUCT_PROPERTY_OVERRIDES,這對應於具體特定平台或產品的批改。契訶夫