build.prop(Android系统移植与调试之——->build.prop生成过程分析)

发布时间:2025-12-10 19:38:47 浏览次数:9

Android系统移植与调试之——->build.prop生成过程分析-build.prop修改手机型号

Android系统移植与调试之——->build.prop生成过程分析本文简要分析一下build.prop是如何生成的。Android的build.prop文件是在Android编译时刻收集的各种property(LCDdensity/语言/编译时间,etc.),编译完成之后,文件生成在out/target/product//system/目录下。在Android运行时刻可以通过property_get()[c/c++域]/SystemProperties_…

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

PRODUCT_DEFAULT_LANGUAGE="$(calldefault-locale-language,$(PRODUCT_LOCALES))" \ PRODUCT_DEFAULT_REGION="$(calldefault-locale-region,$(PRODUCT_LOCALES))" \ 

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

2) Makefile中调用build/tools/buildinfo.sh执行脚本,并输出到build.prop
Buildinfo.sh很简单,只是echo一些属性。

#!/bin/bashecho "# begin build properties"echo "# autogenerated by buildinfo.sh"echo "ro.build.id=$BUILD_ID"echo "ro.build.display.id=$BUILD_DISPLAY_ID"echo "ro.build.version.incremental=$BUILD_NUMBER"echo "ro.build.version.sdk=$PLATFORM_SDK_VERSION"echo "ro.build.version.codename=$PLATFORM_VERSION_CODENAME"echo "ro.build.version.release=$PLATFORM_VERSION"echo "ro.build.date=`date`"echo "ro.build.date.utc=`date +%s`"echo "ro.build.type=$TARGET_BUILD_TYPE"echo "ro.build.user=$USER"echo "ro.build.host=`hostname`"echo "ro.build.tags=$BUILD_VERSION_TAGS"echo "ro.product.model=$PRODUCT_MODEL"echo "ro.product.brand=$PRODUCT_BRAND"echo "ro.product.name=$PRODUCT_NAME"echo "ro.product.device=$TARGET_DEVICE"echo "ro.product.board=$TARGET_BOOTLOADER_BOARD_NAME"echo "ro.product.cpu.abi=$TARGET_CPU_ABI"if [ -n "$TARGET_CPU_ABI2" ] ; then  echo "ro.product.cpu.abi2=$TARGET_CPU_ABI2"fiecho "ro.product.manufacturer=$PRODUCT_MANUFACTURER"if [ -n "$PRODUCT_DEFAULT_LANGUAGE" ] ; then  echo "ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"fiif [ -n "$PRODUCT_DEFAULT_REGION" ] ; then  echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"fiecho "ro.wifi.channels=$PRODUCT_DEFAULT_WIFI_CHANNELS"echo "ro.board.platform=$TARGET_BOARD_PLATFORM"echo "# ro.build.product is obsolete; use ro.product.device"echo "ro.build.product=$TARGET_DEVICE"echo "# Do not try to parse ro.build.description or .fingerprint"echo "ro.build.description=$PRIVATE_BUILD_DESC"echo "ro.build.fingerprint=$BUILD_FINGERPRINT"echo "ro.build.characteristics=$TARGET_AAPT_CHARACTERISTICS"echo "# end build properties"

而,ro.product.locale.language/ ro.product.locale.region就是些属性,等号后面是值。

转载请保留原文地址:字节卷动的博客_CSDN博客-我的Android进阶之旅,Android常见错误解决之道,Java学习领域博主

==================================================================================================

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477