Android属性之build.prop生成过程

摘要:
构建。prop由make系统通过解析build/core/Makefile生成。1) 首先在Makefile中定义各种变量,这些变量将在下一步中使用,例如:PRODUCT_DEFAULT_LANGUAGE=“$”\PRODUCT_DEFAULT_REGION=“$“…2)在Makefile中调用build/tools/buildinfo.sh来执行脚本并将其输出到build.propBuildinfo.sh非常简单,只需回显一些属性,例如:echo“ro.product.locale.language=$product_DEFAULT_language”echo”ro.prodduct.locale.region=$product_DEFAULT_region“…而ro.prod。场所语言/ro。产品场所区域只是一些属性,后面的等号是值。PRODUCT_DEFAULT_LANGUAGE这些在其他语言中定义。mk文件。3) Makefile直接将$/system.prop的内容添加到build.prop中。它存在于许多目录中,将被收集并添加到bulld.props中,例如:./device/samsung/maguro/system.prop./device/samsung/crespo4g/system。prop./device/samsung/crespo/system.prop./device/qcom/msm8660_ surf/system/prop./ddevice/q.com/msm7630_表面/系统。prop./device/qcom/msm8625/system.prop./device/gcom/msm8960/system.prop./edevice/q.com/msm7627a/system.prop…4)收集ADDITIONAL_BUILD_属性中的属性附加到BUILD.prop中。
Android属性之build.prop生成过程

此部分网上这篇文章分析的不错:

http://blog.csdn.net/thl789/article/details/7014300 转载过来

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中首先定义各种变量,这在下一步执行时会用到

比如:

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一些属性,比如:

echo"ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"

echo"ro.product.locale.region=$PRODUCT_DEFAULT_REGION"

...

而,ro.product.locale.language/ ro.product.locale.region就是些属性,等号后面是值。 PRODUCT_DEFAULT_LANGUAGE这些都在其他.mk文件中定义的

3) Makefile中直接把$(TARGET_DEVICE_DIR)/system.prop的内容追加到build.prop中

是在很多目录下存在,都会收集追加到build.prop中,例如:

./device/samsung/maguro/system.prop

./device/samsung/crespo4g/system.prop

./device/samsung/crespo/system.prop

./device/qcom/msm8660_surf/system.prop

./device/qcom/msm7630_surf/system.prop

./device/qcom/msm8625/system.prop

./device/qcom/msm8960/system.prop

./device/qcom/msm7627a/system.prop

……

4)收集ADDITIONAL_BUILD_PROPERTIES中的属性,追加到build.prop中。

ADDITIONAL_BUILD_PROPERTIES又会收集PRODUCT_PROPERTY_OVERRIDES中定义的属性

ADDITIONAL_BUILD_PROPERTIES:= \

$(ADDITIONAL_BUILD_PROPERTIES)\

$(PRODUCT_PROPERTY_OVERRIDES)

PRODUCT_PROPERTY_OVERRIDES 在build/target/product/core.mk有

PRODUCT_PROPERTY_OVERRIDES := \

ro.config.notification_sound=OnTheHunt.ogg \

ro.config.alarm_alert=Alarm_Classic.ogg

通过build.prop生成过程的分析,可知哪里可以修改原有的属性或加入自己定义属性,那就是

2) buildinfo.sh;

3) system.prop;

4) ADDITIONAL_BUILD_PROPERTIES或PRODUCT_PROPERTY_OVERRIDES。

不过个人建议改在system.prop或PRODUCT_PROPERTY_OVERRIDES,这对应于具体特定平台或产品的修改。

免责声明:文章转载自《Android属性之build.prop生成过程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇「专题总结」后缀自动机kvm存储池和存储卷下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端框架Vue自学之Vue CLI(五)

终极目标:掌握和使用Vue(全家桶:Core+Vue-router+Vuex) 本博客目的:记录Vue学习的进度和心得(Vue CLI) 内容:学习和使用Vue CLI2 和 Vue CLI3。如果了解webpack如何一步步配置的,建议可以先看我的前一个博客:前端框架Vue自学之webpack(四)。 正文: Vue CLI 一、Vue CLI 1、前言...

Maven学习总结(四):更改maven的编码格式方式

安装系统之后,一般中文系统默认字符集是GBK。我们安装的软件一般都继承使用操作系统的默认字符集。所以当在中文XP或者win7系统开发,在使用maven(mvn compile)编译项目的时候,就会出现“编码 gbk 的不可映射字符”: 这个是由于代码使用的UTF-8,而maven编译的时候使用的GBK的缘故。 可以通过修改项目的pom文件,可以告诉mave...

ROS知识(3)----功能包package编译的两种方式

ROS的包编译有两种方法(我知道的),一种是用rosmake,这种方法简单;另一种是用catkin_make,这种方法更方便包的管理和开发。这两种方法都是先建立工作空间workspace(类似于vs下的解决方案,用来管理很多的项目),然后建立包package(类似于vs下的项目),最后利用rosmake或者catkin_make进行编译和运行。学会第一种方...

Gradle配置最佳实践

https://blog.csdn.net/devilnov/article/details/53321164 本文会不定期更新,推荐watch下项目。如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request。本文意在分享作者在实践中掌握的关于gradle的一些技巧。 本文固定连接:https://github...

system函数遇到的问题

这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为是其他的代码影响到这个,或是内核驱动文件系统什么的异常导致,昨天有出现了这个问题,就随手百了一下度,问题出现了,很多人都说system()函数要慎用要少用...

Vuejs 使用 lib 库模式打包 umd 解决 NPM 包发布的问题

由于升级了 v0.2 版 GearCase 使用打包工具从 parcel 更换成 vue-cli 3.x。因此打包后发布 NPM 包的方式与之前有很大的差异,这也导致了在发布完 GearCase v0.2.2 版本之后,我自己在进行 NPM / Yarn 安装包时。根本无法通过之前文档的方式,进行引入并注册组件。后来我大概花费了两天的时间来解决这个问题。...