文档章节

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

雨焰
 雨焰
发布于 2014/09/26 11:39
字数 337
阅读 286
收藏 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
博文 232
码字总数 43828
作品 0
新乡
程序员
SystemProperties源码分析 获取 Android WIFI接口

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

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

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

凌川江雪
07/28
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 启动过程和 build 过程

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

曾赛
2010/11/11
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

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序开发系列六:微信框架API的调用

微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发...

JerryWang_SAP
34分钟前
1
0
5 个用 Python 编写 web 爬虫的方法

大家在读爬虫系列的帖子时常常问我怎样写出不阻塞的爬虫,这很难,但可行。通过实现一些小策略可以让你的网页爬虫活得更久。那么今天我就将和大家讨论这方面的话题。 我刚整理了一套2018最新...

糖宝lsh
34分钟前
1
0
docker安装redis、mongodb、mysql等

一、启动docker服务,设置镜像: systemctl start dockervi /etc/docker/daemon.json{ "registry-mirrors": ["https://registry.docker-cn.com"]} 二、下拉镜像: 在镜像中心h...

狼王黄师傅
今天
5
0
deepin系统使用deepin-wine安装exe程序

deepin自带原生deepin-wine使用命令如下: deepin-wine QQBrowser.exedeepin-wine QQMusicSetup.exe 默认安装的快捷方式位置: /root/.wine/drive_c/'Program Files'/Tencent/QQBrowser/......

临江仙卜算子
今天
4
0
快速get到学习Linux操作系统的点

快速get到学习Linux操作系统的点 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能够运行主要的UNIX工具软件...

linuxCool
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部