文档章节

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

雨焰
 雨焰
发布于 2014/09/26 11:39
字数 337
阅读 299
收藏 9

build.prop文件解析可以看--->:http://my.oschina.net/f839903061/blog/145403


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

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

[plain] 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中定义的属性

[plain] view plaincopy

  1. ADDITIONAL_BUILD_PROPERTIES:= \  

  2.         $(ADDITIONAL_BUILD_PROPERTIES)\  

  3.         $(PRODUCT_PROPERTY_OVERRIDES)  

 

通过build.prop生成过程的分析,可知哪里可以修改原有的属性或加入自己定义属性,那就是2) buildinfo.sh; 3) system.prop; 4) ADDITIONAL_BUILD_PROPERTIES或PRODUCT_PROPERTY_OVERRIDES。不过个人建议改在system.prop或PRODUCT_PROPERTY_OVERRIDES,这对应于具体特定平台或产品的修改。


本文转载自:http://blog.csdn.net/thl789/article/details/7014300

共有 人打赏支持
雨焰
粉丝 59
博文 238
码字总数 44571
作品 0
新乡
程序员
私信 提问
SystemProperties源码分析 获取 Android WIFI接口

SystemProperties.java这个类是@hide的,所以不对外公开,一般开发者是访问不到的,但是我们可以通过反射机制来使用。通过反射取得wifi的接口名为例! 下面通过Android源码讲解SystemPropert...

wangxigui
2013/07/12
0
0
1.Android系统源代码目录与系统目录

1.Android源代码的目录中包含了Android系统所有的源代码,从底层驱动到上层应用,Android系统对所有文件都进行了详细管理; 2.而在手机中,Android系统的目录与源代码的目录并不是一一对应的...

凌川江雪
2018/07/28
0
0
android 启动过程和 build 过程

首先下载下android源码并编译,网上的资料特别多,可以参考一下这个网站http://blog.csdn.net/liaoshengjiong/archive/2009/03/04/3957749.aspx 按照网站上的步骤,将android内核编译成功,如...

曾赛
2010/11/11
0
0
A20 hdmi显示以及home键返回到自己的apk、禁止部分应用打开后屏幕旋转

修改代码位置:androidframeworksnativeservicessurfaceflingerSurfaceFlinger.cpp statust SurfaceFlinger::getDisplayInfo(const sp<IBinder>& display, DisplayInfo* info); 将显示翻转1......

wangjian19
2014/01/17
0
0
全面认识Android手机教程

MIUI今天开始发布MIUI ROM的适配教程,这是第一篇,概述Android的分区与架构,个人认为对理解Android有帮助,故转帖。 原帖地址 :http://www.miui.com/thread-402322-1-1.html http://www.m...

zungyiu
2012/01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Batch @SpringBatchTest 注解

Spring Batch 提供了一些非常有用的工具类(例如 JobLauncherTestUtils 和 JobRepositoryTestUtils)和测试执行监听器(StepScopeTestExecutionListener 和 JobScopeTestExecutionListener)......

honeymose
37分钟前
3
0
浏览器缓存

HTTP缓存类型 200 from cache:直接从本地缓存获取响应,可细分为from disk cache, from memory cache 304 Not Modified:协商缓存,本地未命中发送校验数据到服务端,如果服务端数据没有改变,则读...

关元
50分钟前
3
0
正则表达式简单使用说明

在Python3里确实简单明了,测试样例如下 # 正则content = 'Hello 1234567 World_This is a Regex Demo'# 贪婪匹配 尽可能多的匹配result = re.match('^He.*(\d+).*Demo$', co......

轻轻的往前走
51分钟前
3
0
多线程创建方式

一、基本概念 进程:就是正在运行的应用程序,进程是线程的集合。 线程:就是进程中的一条执行路径,一个独立的执行单元。 多线程:就是为了提高程序的效率,使用多线程,每个线程互不影响,...

秋至丶枫以落
55分钟前
3
0
聊聊flink的Async I/O

序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the// interface of Java 8's futures (which is t......

go4it
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部