<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.mywiki.cn/Hovercool/index.php?action=history&amp;feed=atom&amp;title=Android%E5%B1%9E%E6%80%A7%E4%B9%8Bbuild.prop%E7%94%9F%E6%88%90%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90</id>
	<title>Android属性之build.prop生成过程分析 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.mywiki.cn/Hovercool/index.php?action=history&amp;feed=atom&amp;title=Android%E5%B1%9E%E6%80%A7%E4%B9%8Bbuild.prop%E7%94%9F%E6%88%90%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90"/>
	<link rel="alternate" type="text/html" href="https://www.mywiki.cn/Hovercool/index.php?title=Android%E5%B1%9E%E6%80%A7%E4%B9%8Bbuild.prop%E7%94%9F%E6%88%90%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90&amp;action=history"/>
	<updated>2026-09-01T06:15:10Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.mywiki.cn/Hovercool/index.php?title=Android%E5%B1%9E%E6%80%A7%E4%B9%8Bbuild.prop%E7%94%9F%E6%88%90%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90&amp;diff=872&amp;oldid=prev</id>
		<title>2015年5月6日 (三) 12:25 Hovercool</title>
		<link rel="alternate" type="text/html" href="https://www.mywiki.cn/Hovercool/index.php?title=Android%E5%B1%9E%E6%80%A7%E4%B9%8Bbuild.prop%E7%94%9F%E6%88%90%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90&amp;diff=872&amp;oldid=prev"/>
		<updated>2015-05-06T12:25:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;本文简要分析一下build.prop是如何生成的。&lt;br /&gt;
&lt;br /&gt;
Android的build.prop文件是在Android编译时刻收集的各种property（LCD density/语言/编译时间, etc.），编译完成之后，文件生成在out/target/product/&amp;lt;board&amp;gt;/system/目录下。在Android运行时刻可以通过property_get()[c/c++域] / SystemProperties_get*()[Java域]读取这些属性值。&lt;br /&gt;
&lt;br /&gt;
build.prop的生成是由make系统解析build/core/&amp;#039;&amp;#039;&amp;#039;Makefile&amp;#039;&amp;#039;&amp;#039;完成。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1)      Makefile中首先定义各种变量，这在下一步执行时会用到。比如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
PRODUCT_DEFAULT_LANGUAGE=&amp;quot;$(calldefault-locale-language,$(PRODUCT_LOCALES))&amp;quot; \&lt;br /&gt;
PRODUCT_DEFAULT_REGION=&amp;quot;$(calldefault-locale-region,$(PRODUCT_LOCALES))&amp;quot; \&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2)      Makefile中调用build/tools/buildinfo.sh执行脚本，并输出到build.prop&lt;br /&gt;
&lt;br /&gt;
Buildinfo.sh很简单，只是echo一些属性，比如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
echo&amp;quot;ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE&amp;quot;&lt;br /&gt;
echo&amp;quot;ro.product.locale.region=$PRODUCT_DEFAULT_REGION&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
而，ro.product.locale.language/ ro.product.locale.region就是些属性，等号后面是值。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3)      Makefile中直接把$(TARGET_DEVICE_DIR)/&amp;#039;&amp;#039;&amp;#039;system.prop&amp;#039;&amp;#039;&amp;#039;的内容追加到build.prop中。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4)      收集&amp;#039;&amp;#039;&amp;#039;ADDITIONAL_BUILD_PROPERTIES&amp;#039;&amp;#039;&amp;#039;中的属性，追加到build.prop中。&lt;br /&gt;
&lt;br /&gt;
ADDITIONAL_BUILD_PROPERTIES又会收集&amp;#039;&amp;#039;&amp;#039;PRODUCT_PROPERTY_OVERRIDES&amp;#039;&amp;#039;&amp;#039;中定义的属性&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre class=&amp;quot;prettyprint&amp;quot;&amp;gt;&lt;br /&gt;
ADDITIONAL_BUILD_PROPERTIES:= \&lt;br /&gt;
        $(ADDITIONAL_BUILD_PROPERTIES)\&lt;br /&gt;
        $(PRODUCT_PROPERTY_OVERRIDES)&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
通过build.prop生成过程的分析，可知哪里可以修改原有的属性或加入自己定义属性，那就是2) buildinfo.sh; 3) system.prop; 4) ADDITIONAL_BUILD_PROPERTIES或PRODUCT_PROPERTY_OVERRIDES。不过个人建议改在system.prop或PRODUCT_PROPERTY_OVERRIDES，这对应于具体特定平台或产品的修改。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考资料：http://blog.csdn.net/thl789/article/details/7014300&lt;/div&gt;</summary>
		<author><name>Hovercool</name></author>
	</entry>
</feed>