RK3568 Android 13 版本号管理实战:基于 ROCKCHIP_BUILD_NUMBER 的定制化方案

目录

​​​​一、前言

[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)

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,在文件一开始中添加:

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 的版本号管理变得简单、干净、可维护。这是瑞芯微官方为产品化部署预留的标准化方案,值得在量产项目中广泛采用。

相关推荐
Dovis(誓平步青云)2 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码4 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程4 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程7 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程9 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程9 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓9 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程9 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer
supabc1239 小时前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium