新增 OrangePi CM5 Android 13 编译环境配置指南

1、新增 3.7 节 OrangePi CM5 编译环境(与 Radxa CM5 平级):基于 Ubuntu 22.04 Docker 镜像,对齐 OrangePi 官方推荐环境
2、新增 OrangePi 分卷压缩包合并解压踩坑记录:官方文档的管道流式解压会出错,改用先合并再解压的方式
3、新增 OrangePi Dockerfile 模板和构建步骤(android-builder-orangepi:13.x)
4、新增 Radxa / OrangePi 双环境关键差异对比表
5、更新环境信息表:标注 Radxa 和 OrangePi 双环境状态
6、3.6 节重命名为 Radxa CM5 Android 12 编译环境(明确区分)
7、docs/ 新增 OrangePi CM5 Base 两本官方用户手册(v1.3 + Tablet v1.0)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rdzleo 2026-04-17 18:25:44 +08:00
parent 3373e88e5c
commit c21c4d2547
3 changed files with 207 additions and 6 deletions

View File

@ -4,7 +4,7 @@
Mac 电脑通过 Tailscale 跨网络 SSH 连接 Windows 电脑上的 Linux 虚拟机VMware实现远程 Android 底层开发。
## 当前环境信息2026-04-15 已验证)
## 当前环境信息2026-04-17 已验证)
| 项目 | 信息 |
|------|------|
@ -15,9 +15,10 @@ Mac 电脑通过 Tailscale 跨网络 SSH 连接 Windows 电脑上的 Linux 虚
| Tailscale IP | 100.123.82.91 |
| 虚拟机局域网 IP | 192.168.6.60 |
| SSH 密钥 | Mac ~/.ssh/id_ed25519 已部署到虚拟机 |
| Docker | 28.1.1, 镜像 android-builder:12.x (3.43GB) |
| Android SDK | 压缩包 102GB 已备份到 Windows虚拟机已删除 |
| 磁盘 | 700GB 虚拟磁盘,当前已用 13GB可用 640GB |
| Docker | 28.1.1 |
| **Radxa CM5 环境** | Docker 镜像 android-builder:12.x (6.48GB, Ubuntu 20.04 基底)SDK 已编译验证 |
| **OrangePi CM5 环境** | Docker 镜像 android-builder-orangepi:13.x (待构建, Ubuntu 22.04 基底)SDK 已合并待解压 |
| 磁盘 | 700GB 虚拟磁盘,剩余空间足够双环境并行 |
---
@ -238,7 +239,7 @@ gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf → /opt/toolchains/
```
4. 或者将工具链放到 `~/Radxa_CM5/docker/` 目录,取消 Dockerfile 中 COPY 行注释后重新构建镜像
## 3.6 使用 Docker 编译 Android SDK
## 3.6 Radxa CM5 Android 12 编译环境(基于 Ubuntu 20.04
### 3.6.1 解压 SDK
@ -396,7 +397,207 @@ sudo docker start -ai android-build
3. 开发板进入 Loader 模式(按住 Recovery 按键上电)
4. 在 RKDevTool 中加载各 img 文件烧录
## 3.7 Linux 虚拟机共享 Windows VPN外网访问
## 3.7 OrangePi CM5 Android 13 编译环境(基于 Ubuntu 22.04 Docker
OrangePi CM5 BaseRK3588S使用 Android 13 源码,与 Radxa CM5 的 Android 12 并行存在。
为避免污染主机环境,使用独立的 Docker 镜像(基于 Ubuntu 22.04,对齐 OrangePi 官方推荐环境)。
### 3.7.1 官方参考文档
- 《OrangePi_CM5_Base_RK3588S_用户手册_v1.3.pdf》第 7 章Android 13 源码的编译方法
- 《OrangePi_CM5_Base_Tablet_RK3588S_用户手册_v1.0.pdf》
### 3.7.2 SDK 文件准备
OrangePi Android 13 SDK 来自官方百度云/谷歌网盘,是 9 个分卷压缩包:
```
Android_13.tar.gz00 (4.0GB)
Android_13.tar.gz01 (4.0GB)
...
Android_13.tar.gz08 (1.9GB)
md5sum (校验文件)
```
存放路径:`~/OrangePi_CM5/Aandroid_OrangePi/`
### 3.7.3 MD5 校验
```bash
cd ~/OrangePi_CM5/Aandroid_OrangePi
md5sum -c md5sum
# 9 个文件全部显示"成功/确定"才能继续
```
### 3.7.4 合并压缩包(重要)
**经实测:官方文档的管道流式解压(`cat ... | tar -xzf -`)会在某个分卷边界出错**
(已解压 46GB 后报 `gzip: invalid compressed data--format violated`)。
**推荐做法:先合并成单个文件,再解压。**
```bash
cd ~/OrangePi_CM5/Aandroid_OrangePi
# 显式指定顺序合并(避免通配符顺序问题)
cat Android_13.tar.gz00 Android_13.tar.gz01 Android_13.tar.gz02 \
Android_13.tar.gz03 Android_13.tar.gz04 Android_13.tar.gz05 \
Android_13.tar.gz06 Android_13.tar.gz07 Android_13.tar.gz08 \
> Android_13.tar.gz
# 合并后约 34GB耗时约 15 分钟SSD 速度约 37MB/s
ls -lh Android_13.tar.gz
```
### 3.7.5 解压源码
```bash
# 解压到当前目录,产生 Android_13/ 目录
tar -xzf Android_13.tar.gz
# 解压后预计 80-100GB耗时约 20-30 分钟
du -sh Android_13/
```
解压成功后可以删除合并文件和分卷文件节省空间:
```bash
# 可选:保留分卷和 md5sum 作为备份源,删除合并文件
rm Android_13.tar.gz
# 或:已验证解压成功后,彻底清理(需确认 Android_13/ 完整)
# rm Android_13.tar.gz Android_13.tar.gz0*
```
### 3.7.6 创建 Dockerfile
Dockerfile 位于虚拟机 `~/OrangePi_CM5/docker/Dockerfile`,基于 Ubuntu 22.04。
```dockerfile
FROM ubuntu:22.04
# 清华镜像源
RUN sed -i 's@archive.ubuntu.com@mirrors.tuna.tsinghua.edu.cn@g; \
s@security.ubuntu.com@mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 官方文档 7.2 要求的编译依赖
RUN apt-get update -y && apt-get install -y \
git gnupg flex bison gperf build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache \
libgl1-mesa-dev libxml2-utils xsltproc unzip \
&& apt-get install -y u-boot-tools
# Android 13 需要 OpenJDK 11
RUN apt-get install -y openjdk-11-jdk
# 辅助工具
RUN apt-get install -y python3 python3-pip rsync cpio bc kmod \
device-tree-compiler liblz4-tool lzop sudo vim nano
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
CMD ["/bin/bash"]
```
### 3.7.7 构建 Docker 镜像
```bash
cd ~/OrangePi_CM5/docker
sudo docker build -t android-builder-orangepi:13.x .
# 耗时约 5-10 分钟
```
验证镜像:
```bash
sudo docker images android-builder-orangepi
# 预期TAG=13.x, SIZE 约 2GB
```
### 3.7.8 进入 Docker 编译环境
```bash
sudo docker run -it \
--name orangepi-build \
-v ~/OrangePi_CM5/Aandroid_OrangePi/Android_13:/workspace \
-w /workspace \
android-builder-orangepi:13.x \
bash
```
### 3.7.9 执行编译
按官方文档 7.2 节编译参数:
| 参数 | 作用 |
|------|------|
| `-B` | 编译 U-Boot |
| `-K` | 编译 Kernel |
| `-a` | 编译 Android |
| `-F` | 编译 U-Boot + Kernel + Android三合一 |
| `-M` | 在 rockdev 目录生成分区镜像 |
| `-u` | 打包生成最终 update.img |
| `-b` | 指定开发板型号 |
| `--gapps` | 包含 Google Play 服务GApps |
推荐全量编译命令:
```bash
# 容器内执行
./make.sh -FMu -b orangepicm5 --gapps
```
编译耗时:**约 3-6 小时**(取决于 CPU 核心数和内存)。
### 3.7.10 验证编译结果
成功后生成 `update.img`
```bash
cd rockdev/Image-rk3588s_t
ls update.img
# 预期看到 update.img 文件
```
其他镜像文件也在 `rockdev/Image-rk3588s_t/` 目录。
### 3.7.11 烧录到开发板
1. 将 `update.img`(或其他镜像)拷贝到 Windows
2. 使用 **RKDevTool** 瑞芯微烧录工具
3. OrangePi CM5 进入 Loader 模式(按住 MaskROM/Recovery 键上电)
4. 加载 `update.img` 一键烧录
### 3.7.12 关键差异对比(与 Radxa CM5
| 项目 | Radxa CM5 | OrangePi CM5 |
|------|-----------|--------------|
| Android 版本 | 12 | 13 |
| Docker 基础镜像 | ubuntu:20.04 | **ubuntu:22.04** |
| JDK 版本 | OpenJDK 8 | **OpenJDK 11** |
| 交叉编译工具链 | 需手动 COPY 5 套 Linaro | 编译脚本自动下载 |
| SDK 分发方式 | 单个压缩包 | 9 个分卷(需先合并) |
| 编译脚本 | `./build.sh -AUCKup` | `./make.sh -FMu -b orangepicm5 --gapps` |
| 镜像输出目录 | `rockdev/Image-RadxaCM5/` | `rockdev/Image-rk3588s_t/` |
| GMS 支持 | 需注释(官方不含) | `--gapps` 参数直接支持 |
| Docker 镜像名 | android-builder:12.x | android-builder-orangepi:13.x |
### 3.7.13 容器管理
```bash
# 退出容器(编译中断)
exit
# 重新进入已创建的容器(保留编译缓存)
sudo docker start -ai orangepi-build
# 删除容器(重新开始,会丢失容器内临时修改)
sudo docker rm -f orangepi-build
```
## 3.8 Linux 虚拟机共享 Windows VPN外网访问
虚拟机通过 VMware 桥接网络使用 Windows 的 Clash 代理上外网。已配置开机自动生效。

Binary file not shown.