Android11 系统重定义ro.build.display.id

动态调整Android编译版本:jenkins控制ro.build.display.id
本文介绍如何在Android项目中通过修改buildinfo.sh脚本和Makefile,利用jenkins服务器动态设置ro.build.display.id版本号,并提供相关环境配置和验证步骤。

目录

1.修改buildinfo.sh脚本

2.修改Makefile

3.定义全局变量


Android系统默认ro.build.display.id的属性来定义编译的版本号,但是现在项目上需要根据jenkins服务器动态版本号进行修改ro.build.display.id这个属性

1.修改buildinfo.sh脚本

{$PROJECT_PATH}/LINUX/android/build/tools/buildinfo.sh

在上述文件中加入下面代码,这边只是一个示例,读者可以根据自己具体的需求加入,当定义了BUILD_DISPLAY_ID_OVERWRITE,则会重新赋值ro.build.display.id

if [ -n "${BUILD_DISPLAY_ID_OVERWRITE}" ]; then
    echo "ro.build.display.id=${BUILD_DISPLAY_ID_OVERWRITE}"
fi

2.修改Makefile

{$PROJECT_PATH}/LINUX/android/build/core/Makefile

在上述Makefile中添加BUILD_DISPLAY_ID_OVERWRITE="$(BUILD_DISPLAY_ID_OVERWRITE)"

如下所示

$(intermediate_system_build_prop): $(BUILDINFO_SH) $(BUILDINFO_COMMON_SH) $(INTERNAL_BUILD_ID_MAKEFILE) $(BUILD_SYSTEM)/version_defaults.mk $(system_prop_file) $(INSTALLED_ANDROID_INFO_TXT_TARGET) $(API_FINGERPRINT) $(POST_PROCESS_PROPS)
	@echo Target buildinfo: $@
	@mkdir -p $(dir $@)
	$(hide) echo > $@
	$(hide) PRODUCT_BRAND="$(PRODUCT_SYSTEM_BRAND)" \
	        PRODUCT_MANUFACTURER="$(PRODUCT_SYSTEM_MANUFACTURER)" \
	        PRODUCT_MODEL="$(PRODUCT_SYSTEM_MODEL)" \
	        PRODUCT_NAME="$(PRODUCT_SYSTEM_NAME)" \
	        PRODUCT_DEVICE="$(PRODUCT_SYSTEM_DEVICE)" \
	        $(call generate-common-build-props-with-product-vars-set,system,$@)
	$(hide) TARGET_BUILD_TYPE="$(TARGET_BUILD_VARIANT)" \
	        TARGET_BUILD_FLAVOR="$(TARGET_BUILD_FLAVOR)" \
	        TARGET_DEVICE="$(TARGET_DEVICE)" \
	        PRODUCT_DEFAULT_LOCALE="$(call get-default-product-locale,$(PRODUCT_LOCALES))" \
	        PRODUCT_DEFAULT_WIFI_CHANNELS="$(PRODUCT_DEFAULT_WIFI_CHANNELS)" \
	        BUILD_ID="$(BUILD_ID)" \
	        BUILD_KEYS="$(BUILD_KEYS)" \
	        DISPLAY_BUILD_NUMBER="$(DISPLAY_BUILD_NUMBER)" \
	      + BUILD_DISPLAY_ID_OVERWRITE="$(BUILD_DISPLAY_ID_OVERWRITE)"  \
	        DATE="$(DATE_FROM_FILE)" \
	        BUILD_USERNAME="$(BUILD_USERNAME)" \
	        BUILD_HOSTNAME="$(BUILD_HOSTNAME)" \

3.定义全局变量

在使用编译命令之前需要在控制的终端中设置好环境变量

export BUILD_DISPLAY_ID_OVERWRITE=V0.0.1

 然后重新编译,会在如下路径的build.prop中能体现出来

{$PROJECT_PATH}/LINUX/android/out/target/product/{$Target}/system/build.prop

 然后将镜像烧写到DUT中,开机之后使用下属命令,查看是否有变化

getprop ro.build.display.id

V0.0.1

<think>嗯,用户想了解Android11系统ro.build.display.id属性的具体位置和用途。首先,我需要回忆一下这个属性的相关知识。我记得在Android系统中,ro.build开头的属性通常是只读的构建信息,比如版本号、编译时间等。ro.build.display.id可能用来显示设备的版本信息,比如编译号或者自定义的版本名称。接下来,关于位置,用户可能需要知道在哪里可以找到这个属性。根据之前的引用,build.prop文件里会有这些属性。比如引用2提到在out/target/product/project/system/build.prop下可以找到,或者通过adb shellgetprop命令获取。另外,引用3提到通过getprop命令不需要root权限,这可能对用户有帮助。然后,用途方面,这个属性可能用于显示版本信息,供用户或应用识别设备的具体编译版本。用户提到项目需要根据Jenkins动态修改这个属性,所以可能需要修改生成该属性的脚本,比如buildinfo.sh,如引用1所说。这时候需要确认修改的位置和方法是否正确,比如在编译时修改脚本,使得生成的build.prop中包含动态版本号。另外,用户可能遇到权限问题,比如访问build.prop需要root权限,但引用3指出通过getprop可以绕过这个问题。因此,在回答中应该提到两种获取方式:直接查看build.prop文件和使用getprop命令,同时说明权限问题。 还需要考虑用户的实际应用场景,比如自动化测试脚本中如何获取该属性,这时候推荐使用getprop,因为它不需要root权限,更可靠。同时,修改该属性的方法可能需要修改编译脚本,如buildinfo.sh,并新编译系统,这对于系统开发者来说是可行的,但普通用户可能无法修改,所以需要区分用户身份。 可能用户是系统开发人员,负责定制ROM,需要动态生成版本号,因此需要指导如何修改构建脚本。或者用户是应用开发者,需要在应用中获取设备版本信息,这时候需要说明如何通过代码或命令获取。最后,生成相关问题时要围绕属性位置、用途、修改方法和应用场景展开,确保覆盖用户可能进一步想知道的内容,比如如何动态修改、属性在代码中的调用方式等。</think>### Android 11系统中`ro.build.display.id`属性的位置及用途 #### 1. **属性用途** `ro.build.display.id`是Android系统用于标识设备编译版本信息的属性,通常包含版本号、编译类型(如用户版/调试版)及自定义标识(如厂商名称)。例如,可能显示为$Android11-Release-v2.3.5$[^1]。 该属性在系统设置中显示版本号,或通过代码调用`Build.DISPLAY`字段获取[^3]。 #### 2. **属性位置** - **编译生成文件**: 系统编译后,该属性存储在`out/target/product/{项目名}/system/build.prop`文件中[^2]。 - **运行时获取**: 通过以下命令可直接获取(无需root权限): ```bash adb shell getprop ro.build.display.id ``` 或通过代码调用`Build.DISPLAY`字段[^3]。 #### 3. **修改方式** 若需动态修改(如Jenkins集成): 1. **修改构建脚本**: 编辑`build/make/tools/buildinfo.sh`,添加以下行以覆盖默认值: ```bash echo "ro.build.display.id=$CUSTOM_VERSION" ``` `$CUSTOM_VERSION`替换为动态生成的版本号[^1]。 2. **新编译系统**: 修改后需新编译生效,新值将写入`build.prop`[^2]。 #### 4. **权限问题** - 直接读取`/system/build.prop`需root权限,但通过`getprop`或`Build`类API可规避此限制[^3]。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云海无语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值