文档章节

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

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

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

雨焰
粉丝 58
博文 262
码字总数 47234
作品 0
新乡
程序员
私信 提问
SystemProperties源码分析 获取 Android WIFI接口

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

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

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

凌川江雪
2018/07/28
0
0
[RK3399][Android7.1] 调试笔记 --- 开机设置默认HDMI副屏分辨率无效

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kris_fei/article/details/89476206 Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 背景: 由于手动焊接...

KrisFei
04/23
0
0
android 启动过程和 build 过程

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

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

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

wangjian19
2014/01/17
687
0

没有更多内容

加载失败,请刷新页面

加载更多

如何更改iOS应用程序的名称?

我前几天用一个愚蠢的开发代码名称开始了一个iPhone项目,现在我想改变项目的名称,因为它已经接近完成了。 但是我不知道如何使用Xcode来做这件事,尝试在info.plist文件中更改应用程序的名称...

技术盛宴
27分钟前
3
0
关于win10tensorflow的配置(CPU+GPU)

主要内容 CPU篇 GPU篇 【前期准备与注意事项】 环境:window1064位+python36(37)+CUDA9.0+cuDNN7.6+tensorflow_gpu-1.12.0 软件:anaconda+pycharm 硬件:有nvidia显卡的笔记本或台式(非A...

放只虎归个山
36分钟前
3
0
C#中的多行字符串文字

有没有一种简单的方法可以在C#中创建多行字符串文字? 这是我现在所拥有的: string query = "SELECT foo, bar"+ " FROM table"+ " WHERE id = 42"; 我知道PHP有 <<<BLOCKBLOCK; C#是......

javail
43分钟前
4
0
微信支付之小微商户扫盲!支持信用卡,免营业执照!

微信支付商户申请面向线下小微商户开放,符合条件的微信支付服务商可为小微商户发起接入申请。无需营业执照。 小微商户日收款额度为5万元~30万元 。 信用卡支付日限额为1千;月限额1万。 结算...

吴伟祥
今天
4
0
大话SDWebImage(三)-- 图片下载层

四、图片下载层 SDWebImageDownloader是处理图片下载的类 4.1 图片下载步骤 首先介绍下dispatch_barrier,GCD中的dispatch_barrier目的是在并发队列实现串行的效果,创建下载任务SDWebImageD...

aron1992
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部