目录
一、前言
1.1 为什么需要定制版本号
1.2 常见的修改方式及问题
二、官方预留机制:ROCKCHIP_BUILD_NUMBER
2.1 在 version_util.mk 中发现官方预留
2.2 版本号的传递链
三、具体实现
3.1 修改 rk3568_t.mk
3.2验证
总结
一、前言
1.1 为什么需要定制版本号
在 Android 设备量产和交付过程中,版本号(Build Number)是设备身份的核心标识之一。它出现在:
| 位置 | 说明 |
|---|---|
| Settings → 关于平板电脑 → 版本号 | 用户可见的版本标识 |
ro.build.display.id | 系统属性,应用可读取 |
ro.build.fingerprint | 完整的构建指纹 |
| OTA 升级包 | 服务器识别设备版本的依据 |
| 售后追踪 | 通过版本号查询生产批次 |
默认版本号的问题:
eng.androi.20260911.060024这个默认值包含:
eng:工程版本androi:编译用户名的前 6 位20260911.060024:编译日期和时间
1.2 常见的修改方式及问题
| 方式 | 问题 |
|---|---|
直接改build.prop | 编译后被覆盖 |
改version_util.mk | AOSP 核心文件,升级 SDK 时被覆盖 |
改version_defaults.mk | 同上,且逻辑复杂 |
改system.prop | 需要额外维护,容易遗漏 |
理想方案:使用 SDK官方预留的变量,在板级配置文件中定义,既干净又安全。
二、官方预留机制:ROCKCHIP_BUILD_NUMBER
2.1 在version_util.mk中发现官方预留
打开build/core/version_util.mk,找到BUILD_NUMBER的定义部分:
逻辑解读:
| 优先级 | 条件 | 结果 |
|---|---|---|
| 1 | 定义了ROCKCHIP_BUILD_NUMBER | BUILD_NUMBER=ROCKCHIP_BUILD_NUMBER |
| 2 | 未定义ROCKCHIP_BUILD_NUMBER | BUILD_NUMBER= 默认的eng.用户名.日期时间 |
关键发现:RK3568 SDK 官方预留了ROCKCHIP_BUILD_NUMBER变量,专门用于覆盖默认版本号。
2.2 版本号的传递链
ROCKCHIP_BUILD_NUMBER(BoardConfig.mk 定义) ↓ BUILD_NUMBER(version_util.mk 赋值) ↓ BUILD_DISPLAY_ID = $(BUILD_ID).$(BUILD_NUMBER) ↓ ro.build.display.id(build.prop 生成) ↓ Settings → 关于平板电脑 → 版本号这就是为什么改ROCKCHIP_BUILD_NUMBER就能改版本号显示。
三、具体实现
3.1 修改 rk3568_t.mk
打开device/rockchip/rk356x/rk3568_t/rk3568_t.mk,在文件一开始中添加:
# ============================================================ # 版本号定制 # ============================================================ # 使用官方预留的 ROCKCHIP_BUILD_NUMBER 变量 # 该变量会覆盖 version_util.mk 中的默认 BUILD_NUMBER # ============================================================ ROCKCHIP_BUILD_NUMBER := rk3568_v1.0.03.2验证
在安卓板子上执行以下shell命令可以看到版本号成功写入
或者在系统设置页面也能看到
经过查询,Android 的ro.build.display.id属性不是单独的一个值,而是由多个字段组合而成的:
| 字段 | 含义 | 你的值 |
|---|---|---|
rk3568_t | 产品名称(PRODUCT_NAME) | 来自device/rockchip/rk356x/rk3568_t下的配置 |
userdebug | 编译类型(BUILD_TYPE) | 你当前是 userdebug 版本 |
13 | Android 版本(PLATFORM_VERSION) | Android 13 |
TQ3C.230805.001.B2 | 内部版本号(BUILD_ID) | 由 AOSP 定义,通常不改 |
rk3568_v1.0.0 | 自定义的版本号 | ✅ 这里就是ROCKCHIP_BUILD_NUMBER生效的位置 |
release-keys | 签名类型(BUILD_KEYS) | 默认 release-keys |
ROCKCHIP_BUILD_NUMBER只控制中间那个“BUILD_NUMBER”部分,它不会替换整个ro.build.display.id,而是作为其中的一个字段被拼进去。
总结
通过ROCKCHIP_BUILD_NUMBER,RK3568 Android 13 SDK 的版本号管理变得简单、干净、可维护。这是瑞芯微官方为产品化部署预留的标准化方案,值得在量产项目中广泛采用。