Rock 5 (RK3588) Android 版本升级路线图:从 12 到 16 的完整规划

这是一份详细的 Android 版本升级计划,适用于 Rock 5 (RK3588) 从 Android 12 本地编译镜像出发,逐代升级至 Android 16。专注车载音频方向,熟悉 Audio/AudioFlinger。

一、整体分阶段升级计划

阶段 版本 预计工作量 主要挑战 博客重心
Phase 0 Android 12 基线 建立基线,清理代码 搭建开发环境
Phase 1 12 → 13 ⭐⭐⭐⭐⭐ AIDL/HIDL 迁移、Audio HAL 重构 AIDL 化 + Audio 变革
Phase 2 13 → 14 ⭐⭐⭐ VNDK 43、隐私沙盒、Helium Framework 稳定化
Phase 3 14 → 15 ⭐⭐⭐ 隐私增强、SELinux 收紧 安全与隐私
Phase 4 15 → 16 ⭐⭐⭐⭐ Project Kotlin、全面 Kotlin化 Kotlin + 现代架构

Phase 0: Android 12 基线准备(1~2 周)

目标:在升级前建立稳定的 Android 12 基线,清理历史 patch,确定 BSP 适配边界。

核心改动点:

  • 梳理现有 device/rockchip/rk3588 下的所有本地 patch
  • 记录内核版本(建议 kernel 5.10 或更新)
  • 整理 Audio HAL 源码结构(HIDL 还是 AIDL?)
  • 建立 CI 编译验证(每次升级前跑通)

验证方法:

source build/envsetup.sh
lunch rk3588-userdebug
m -j$(nproc)

adb reboot bootloader
fastboot flash boot boot.img
fastboot flash system system.img
fastboot reboot

Phase 1: Android 12 → 13(4~6 周)⭐ 重点

目标:完成 HIDL → AIDL 全面迁移,重构 Audio HAL,适配 Android 13 新特性和强制要求。

模块 工作量 备注
AIDL/HIDL 迁移 ⭐⭐⭐⭐ 大量 HAL 接口重写
Audio HAL ⭐⭐⭐⭐ 结合专长,重点深挖
VNDK/SPT ⭐⭐⭐ 43→44
SELinux ⭐⭐ 策略更新
内核 ⭐⭐ 可能需要升级

Phase 2: Android 13 → 14(3~4 周)

领域 Android 13 → 14 关键变化
隐私沙盒 Privacy Sandbox API,广告 ID 变更
VNDK VNDK 版本从 44 升至 45
Helium SELinux 限制传感器访问
通知权限 POST_NOTIFICATIONS 权限正式强制
前台服务类型 必须声明 foregroundServiceType
蓝牙 LE Audio 增强(Auracast)
内核 要求 5.15+(建议 6.1 LTS)

Phase 3: Android 14 → 15(3~4 周)

领域 Android 14 → 15 关键变化
隐私强化 ACCESS_FINE_LOCATION 需精确到后台权限审批
SELinux 更多强制(enforcing)域,seapp contexts 变化
Photo Picker 系统级照片选择器替代直接媒体访问
预测返回 手势导航预测返回动画
内核 要求 6.1 LTS+,推荐 6.6
VNDK VNDK 45 → 46

Phase 4: Android 15 → 16(4~6 周)

领域 Android 15 → 16 关键变化(预测)
Kotlin Framework 大量 Java → Kotlin,AOSP Kotlin-first
隐私 更细粒度的媒体权限
内核 要求 6.12+(传闻要求)
ABI 32-bit 支持进一步裁撤

二、Android 12 → 13 详细 Patch 清单(重点)

2.1 AIDL/HIDL 迁移概览

Android 13 是 HIDL 的终点:从 Android 13 开始,所有 HAL 必须使用 AIDL,不再支持新的 HIDL 接口。现有 HIDL 接口需逐步迁移。

必须迁移的 HAL(按优先级):

HAL 文件位置 迁移说明
audio.primary hardware/interfaces/audio/ 必须迁移到 AIDL
audio.effect hardware/interfaces/audio/effect/ 已有 AIDL 版本
audio.core hardware/interfaces/audio/core/ Android 13 新增 AIDL
bluetooth.audio hardware/interfaces/bluetooth/audio/ AIDL mandatory
radio hardware/interfaces/radio/ 必须 AIDL
health hardware/interfaces/health/ AIDL mandatory
lights hardware/interfaces/lights/ AIDL mandatory
wifi hardware/interfaces/wifi/ AIDL mandatory

AIDL vs HIDL 关键区别:

维度 HIDL AIDL
接口定义语言 HIDL (.hal) AIDL (.aidl)
IPC 机制 Binder HIDL driver 标准 Binder
代码生成 hidl-gen aidl
传输方式 HWBinder / passthrough 直接 Binder
Android 版本 8.1~12 (deprecated) 10+ (mandatory 13+)

2.2 Audio HAL 详细 Patch 清单

Audio Policy Configuration

Android 13 强制要求 audio_policy_configuration.xml schema 版本升级到 9.0

<?xml version="1.0" encoding="UTF-8"?>
<audioPolicyConfiguration version="9.0"
    xmlns:xi="http://www.w3.org/2001/XInclude">
    <!-- Android 13 要求: version="9.0" -->
    <!-- 相比 7.0 的变化:
         1. Haptic 通道正式支持
         2. SPATIALIZATION 支持
         3. ROUTING_POLICY 更细粒度
    -->
</audioPolicyConfiguration>

AudioFlinger 核心改动

改动 文件 说明
Direct Output AudioFlinger.cpp 路径优化,减少延迟
Volume Shaper API VolumeShaper.h/.cpp 新增或增强
Offload 策略 OffloadControl.h BT Audio offload 策略调整
Haptic Audio HapticGenerator.cpp 新增(Android 13)

2.3 VNDK & SPT 变化

版本 Android 12 Android 13 变化
VNDK Core 32 33 +1
VNDK SP 32 33 +1

2.4 SELinux 策略变化

变化 说明 影响
healthd 移除 health HAL 替代 healthd 删除 healthd.te
inetd 移除 网络栈简化 删除相关 sepolicy
Statsd 沙盒化 独立进程隔离 新增 statsd.te

2.5 内核版本要求

Android 版本 最低内核版本 推荐内核版本
Android 12 5.4+ 5.10 LTS
Android 13 5.15+ 6.1 LTS
Android 14 5.15+ 6.1 LTS
Android 15 6.1+ 6.6 LTS
Android 16 6.12+ (传闻) 6.12 LTS

2.6 其他 Breaking Changes

  • 通知权限:POST_NOTIFICATIONS 权限正式强制
  • 蓝牙地址隐藏:READ_BLUETOOTH_ADDRESS 需定位权限
  • Wi-Fi 扫描限制:需要 NEARBY_WIFI_DEVICES
  • 前台服务类型:必须声明 foregroundServiceType

三、核心建议

Phase 1 (12→13) 是整个升级最难的部分,AIDL 迁移工作量最大。建议先从 Audio HAL 的 HIDL→AIDL 入手,利用对 Audio/AudioFlinger 的熟悉优势打出信心。等 12→13 走通了,13→14、14→15 的增量升级会轻松很多。


四、下一步行动

  1. Phase 0 — 把现有的 Android 12 源码清理一遍,建立基线
  2. 系列第 0 篇 — 写一篇环境搭建的博客
  3. Phase 1 — 开始 12→13 升级,重点攻 AIDL/HIDL 迁移

发表评论