diff --git a/Tailscale + SSH 远程开发操作指南.md b/Tailscale + SSH 远程开发操作指南.md index ff4121a..58b2d28 100644 --- a/Tailscale + SSH 远程开发操作指南.md +++ b/Tailscale + SSH 远程开发操作指南.md @@ -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 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 代理上外网。已配置开机自动生效。 diff --git a/docs/OrangePi_CM5_Base_RK3588S_用户手册_v1.3.pdf b/docs/OrangePi_CM5_Base_RK3588S_用户手册_v1.3.pdf new file mode 100644 index 0000000..c7beaad Binary files /dev/null and b/docs/OrangePi_CM5_Base_RK3588S_用户手册_v1.3.pdf differ diff --git a/docs/OrangePi_CM5_Base_Tablet_RK3588S_用户手册_v1.0.pdf b/docs/OrangePi_CM5_Base_Tablet_RK3588S_用户手册_v1.0.pdf new file mode 100644 index 0000000..f5c8bd9 Binary files /dev/null and b/docs/OrangePi_CM5_Base_Tablet_RK3588S_用户手册_v1.0.pdf differ