目录
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