Android属性之build.prop生成过程分析

本文简要分析一下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中首先定义各种变量,这在下一步执行时会用到。比如:

[cpp] view plaincopy
  1. ...
  2. PRODUCT_DEFAULT_LANGUAGE="$(calldefault-locale-language,$(PRODUCT_LOCALES))" \
  3. PRODUCT_DEFAULT_REGION="$(calldefault-locale-region,$(PRODUCT_LOCALES))" \
  4. ...

2)      Makefile中调用build/tools/buildinfo.sh执行脚本,并输出到build.prop

Buildinfo.sh很简单,只是echo一些属性,比如:

[cpp] view plaincopy
  1. ...
  2. echo"ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"
  3. echo"ro.product.locale.region=$PRODUCT_DEFAULT_REGION"
  4. ...

而,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中定义的属性

[cpp] view plaincopy
  1. ADDITIONAL_BUILD_PROPERTIES:= \
  2. $(ADDITIONAL_BUILD_PROPERTIES)\
  3. $(PRODUCT_PROPERTY_OVERRIDES)

例如:在device.mk中更加编译选项不同:

[cpp] view plaincopy
  1. ifeq ($(BUILD_x_TARGET),)
  2. BUILD_x_TARGET := false
  3. endif
  4. PRODUCT_PROPERTY_OVERRIDES += persist.sys.x.target=$(BUILD_x_TARGET)

总结:

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

那就是2) buildinfo.sh; 3) system.prop; 4) ADDITIONAL_BUILD_PROPERTIES或PRODUCT_PROPERTY_OVERRIDES。

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

Android 系统(94)---Android属性之build.prop生成过程分析相关推荐

  1. Android属性之build.prop生成过程分析

    本文简要分析一下build.prop是如何生成的.Android的build.prop文件是在Android编译时刻收集的各种property(LCD density/语言/编译时间, etc.),编 ...

  2. Android系统移植与调试之-------build.prop文件详细赏析

    小知识:什么是build.prop?   /system/build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件.这个文件是如 ...

  3. 关于如何修改android系统system文件夹下build.prop文件参数

    最近在做一个新项目时,由于公司沟通上的一些问题,导致sdk供应商提供的版本没办法在手机上使用(因为sdk会识别设备名称,所以只能在我们公司的设备上使用),所以没有办法在手机app中使用,由于沟通成本和 ...

  4. Android系统架构-[Android取经之路]

    摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...

  5. 【android系统】android系统升级流程分析(二)---update升级包分析

    接下来我们将通过几篇文章来分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.今天让我先来分析下升级包update.zip. 一 ...

  6. android 手写字体识别,一种基于Android系统的手写数学公式识别及生成MathML的方法...

    专利名称:一种基于Android系统的手写数学公式识别及生成MathML的方法 技术领域: 本发明属于模式识别技术领域,涉及数学公式中字符间的空间结构分析,具体涉及一种基于Android系统的手写数学 ...

  7. android 服务端技术,移动应用服务器端开发(基于JSP技术)-2017 Android系统构架 Android系统构架.docx...

    Android系统构架 PAGE 1 目 录 TOC \o "1-3" \h \z \u 一.Android系统构架 1 二.Linux内核层 2 三.系统运行库层 3 (一)系统 ...

  8. 【android系统】android系统升级流程分析(一)---recovery模式中进行update包升级流程分析

    今天我们直接来看下android中具体的升级过程是如何的. 升级流程概述 升级的流程图: 升级流程分析 第一步:升级包获取 升级获取可以通过远程下载,也可直接拷贝到指定目录即可. 第二步:准备升级 然 ...

  9. android log抓取方法,Android系统之Android抓取各种log的方法

    Android系统之Android抓取各种log的方法 2018年11月25日 | 萬仟网移动技术 | 我要评论 android之android抓取各种log的方法 1.logcat (四类log b ...

最新文章

  1. LinkedList方法(可实现栈和队列)
  2. 如何用SPY++工具查看窗体的句柄
  3. React Native JSBundle拆包之原理篇
  4. linux openssl 反弹加密 shell
  5. 004_JavaScript版本
  6. 回腾讯了......
  7. Android开发之ListView的全选和全不选
  8. jwt判断token是否过期_4spring-security5整合jwt做登录、权限验证,全网最全!!!可用...
  9. 查看python下安装的包有哪些
  10. Kettle JAVA代码表达式
  11. inceptor-plsql 系统预定义函数/过程
  12. 判断文件是否为DICOM文件
  13. ARM体系结构与编程 书
  14. jsp 乱码问题原因
  15. mac HBux连接夜神模拟器
  16. 使用PhotoShop制作蓝底证件照
  17. rfc3315_DHCPv6-RFC3315(中文).pdf
  18. ssh “Missing privilege separation directory: /run/sshd“
  19. RT_Thread中rtconfig.h解析
  20. 1.PlantUML-时序图

热门文章

  1. (4)散列函数设计:除留余数法
  2. java复习系列[4] - Java IO
  3. 【LeetCode】【HOT】20. 有效的括号(栈)
  4. 【小项目】SSM 实现单表 CRUD
  5. Ubuntu: 搭建tftp,nfs服务器
  6. Android数据存储------1,文件存储
  7. Java基础知识学习(七)
  8. C#操作IIS完整解析
  9. 在freemarker中使用jsp标签 Using FreeMarker with servlets
  10. java.util.Locale简介