本文简要分析一下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 copy to clipboard print ?
  1. ...
  2. PRODUCT_DEFAULT_LANGUAGE="$(calldefault-locale-language,$(PRODUCT_LOCALES))"\
  3. PRODUCT_DEFAULT_REGION="$(calldefault-locale-region,$(PRODUCT_LOCALES))"\
  4. ...
... 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 copy to clipboard print ?
  1. ...
  2. echo"ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"
  3. echo"ro.product.locale.region=$PRODUCT_DEFAULT_REGION"
  4. ...
... 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 copy to clipboard print ?
  1. ADDITIONAL_BUILD_PROPERTIES:=\
  2. $(ADDITIONAL_BUILD_PROPERTIES)\
  3. $(PRODUCT_PROPERTY_OVERRIDES)
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,这对应于具体特定平台或产品的修改。

更多相关文章

  1. 基于 Android(安卓)NDK 的学习之旅-----环境搭建
  2. Android(安卓)JNI 实例
  3. 申请图吧地图Android(安卓)API密钥详解
  4. Android(安卓)Framework源码下载及编译
  5. Android学习-RelativeLayout相对布局属性方法
  6. RelativeLayout常用布局属性
  7. Android(安卓)UI 之systerm Bar 以及状态栏透明相关的知识点
  8. Android禁止横屏竖屏切换
  9. Android(安卓)系统中使用GDB调试C程序

随机推荐

  1. Android map
  2. Mac 配置Android环境变量( 有图)
  3. Android 编辑框(EditText)属性
  4. 新浪微博Android客户端SSO授权认证缺陷
  5. android中adb命令大全
  6. Android 性能优化的一些方法
  7. 【android乱七八糟】android体系结构
  8. OpenJDK将对Android开发产生怎样的影响?
  9. Android:EditText
  10. Android UI之EditText注意点收集