目录
[1.1 为什么需要定制版本号](#1.1 为什么需要定制版本号)
[1.2 常见的修改方式及问题](#1.2 常见的修改方式及问题)
二、官方预留机制:ROCKCHIP_BUILD_NUMBER
[2.1 在 version_util.mk 中发现官方预留](#2.1 在 version_util.mk 中发现官方预留)
[2.2 版本号的传递链](#2.2 版本号的传递链)
[3.1 修改 rk3568_t.mk](#3.1 修改 rk3568_t.mk)
一、前言
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,在文件一开始中添加:
bash
# ============================================================
# 版本号定制
# ============================================================
# 使用官方预留的 ROCKCHIP_BUILD_NUMBER 变量
# 该变量会覆盖 version_util.mk 中的默认 BUILD_NUMBER
# ============================================================
ROCKCHIP_BUILD_NUMBER := rk3568_v1.0.0
3.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 的版本号管理变得简单、干净、可维护。这是瑞芯微官方为产品化部署预留的标准化方案,值得在量产项目中广泛采用。