新增 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:
parent
3373e88e5c
commit
c21c4d2547
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
Mac 电脑通过 Tailscale 跨网络 SSH 连接 Windows 电脑上的 Linux 虚拟机(VMware),实现远程 Android 底层开发。
|
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 |
|
| Tailscale IP | 100.123.82.91 |
|
||||||
| 虚拟机局域网 IP | 192.168.6.60 |
|
| 虚拟机局域网 IP | 192.168.6.60 |
|
||||||
| SSH 密钥 | Mac ~/.ssh/id_ed25519 已部署到虚拟机 |
|
| SSH 密钥 | Mac ~/.ssh/id_ed25519 已部署到虚拟机 |
|
||||||
| Docker | 28.1.1, 镜像 android-builder:12.x (3.43GB) |
|
| Docker | 28.1.1 |
|
||||||
| Android SDK | 压缩包 102GB 已备份到 Windows,虚拟机已删除 |
|
| **Radxa CM5 环境** | Docker 镜像 android-builder:12.x (6.48GB, Ubuntu 20.04 基底),SDK 已编译验证 |
|
||||||
| 磁盘 | 700GB 虚拟磁盘,当前已用 13GB,可用 640GB |
|
| **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 行注释后重新构建镜像
|
4. 或者将工具链放到 `~/Radxa_CM5/docker/` 目录,取消 Dockerfile 中 COPY 行注释后重新构建镜像
|
||||||
|
|
||||||
## 3.6 使用 Docker 编译 Android SDK
|
## 3.6 Radxa CM5 Android 12 编译环境(基于 Ubuntu 20.04)
|
||||||
|
|
||||||
### 3.6.1 解压 SDK
|
### 3.6.1 解压 SDK
|
||||||
|
|
||||||
@ -396,7 +397,207 @@ sudo docker start -ai android-build
|
|||||||
3. 开发板进入 Loader 模式(按住 Recovery 按键上电)
|
3. 开发板进入 Loader 模式(按住 Recovery 按键上电)
|
||||||
4. 在 RKDevTool 中加载各 img 文件烧录
|
4. 在 RKDevTool 中加载各 img 文件烧录
|
||||||
|
|
||||||
## 3.7 Linux 虚拟机共享 Windows VPN(外网访问)
|
## 3.7 OrangePi CM5 Android 13 编译环境(基于 Ubuntu 22.04 Docker)
|
||||||
|
|
||||||
|
OrangePi CM5 Base(RK3588S)使用 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 代理上外网。已配置开机自动生效。
|
虚拟机通过 VMware 桥接网络使用 Windows 的 Clash 代理上外网。已配置开机自动生效。
|
||||||
|
|
||||||
|
|||||||
BIN
docs/OrangePi_CM5_Base_RK3588S_用户手册_v1.3.pdf
Normal file
BIN
docs/OrangePi_CM5_Base_RK3588S_用户手册_v1.3.pdf
Normal file
Binary file not shown.
BIN
docs/OrangePi_CM5_Base_Tablet_RK3588S_用户手册_v1.0.pdf
Normal file
BIN
docs/OrangePi_CM5_Base_Tablet_RK3588S_用户手册_v1.0.pdf
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user