RK3568上Android的编译(TODO)

RK3568 Android 12 编译指南 (正点原子)

环境信息

项目
开发板正点原子 ATK-RK3568
Android 版本Android 12 (SQ3A.220605.009.B1)
内核版本Linux 4.19
Kernel DTSrk3568-atk-evb1-ddr4-v10
U-Boot 配置rk3568
Kernel 配置rockchip_defconfig
目标产品rk3568_s-userdebug
SDK 版本ATK_SDK v1.1
编译主机WSL2 (Ubuntu 26.04 LTS)
CPU32 cores
内存16 GB
磁盘~633 GB 可用

1. 环境准备

1.1 安装必要工具包

# 基础工具
sudo apt-get update
sudo apt-get install -y openjdk-8-jdk
sudo apt-get install -y git-core gnupg flex bison build-essential \
    zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
    libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev \
    lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip \
    device-tree-compiler python2 python3 lz4 cpio

1.2 配置 Java 环境

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

2. 解压源码

2.1 解压分卷 ZIP

源码以 4 个分卷 ZIP 形式提供:

03��android12_sdk.zip.001
03��android12_sdk.zip.002
03��android12_sdk.zip.003
03��android12_sdk.zip.004

使用 7zip 合并解压:

7z x 03*.zip.001

解压后得到一个 .tgz 文件(约 32GB)。

2.2 解压 TGZ

tar -xzf <filename>.tgz

解压后得到 rk3568_android12_SDK/ 目录。


3. 编译

3.1 加载编译环境

cd ~/rk/rk3568_android12_SDK
source build/envsetup.sh
lunch rk3568_s-userdebug

3.2 一键编译 (U-Boot + Kernel + Android)

# -U=uboot -K=kernel -A=Android -J=并行线程数
# 注意:16GB 内存建议使用 -J8,避免 OOM
./build.sh -UKA -J8

编译完成后,镜像文件自动输出到 rockdev/Image-rk3568_s/

3.3 生成 update.img (可选)

./build.sh -u

4. 编译过程中遇到的问题及解决方案

问题 1: python2: not found

现象: U-Boot 编译时 make.sh 脚本检查 python2 不存在。

原因: Ubuntu 26.04 默认不带 python2,但 U-Boot 的 make.sh 使用 make PYTHON=python2

解决:

sudo ln -sf /usr/bin/python3 /usr/bin/python2

问题 2: Python 2 语法错误

现象: 内核编译时 kernel-4.19/scripts/mkmultidtb.py 报语法错误。

原因: 该脚本使用 Python 2 的 print 语句(如 print __doc__),但系统使用 Python 3 解释。

解决:

# 修改 shebang 为 python3
sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python3|' kernel-4.19/scripts/mkmultidtb.py
# 修复 print 语句
sed -i 's/print __doc__/print(__doc__)/' kernel-4.19/scripts/mkmultidtb.py
sed -i 's/print target_dtb_list/print(target_dtb_list)/' kernel-4.19/scripts/mkmultidtb.py

问题 3: 缺少 .git/HEAD 文件

现象: 编译报错,提示 3 个模块缺少 .git/HEAD

原因: 从 tarball 解压的源码没有 git 历史,但 Android.bp 文件引用 .git/HEAD 用于版本号生成。

涉及模块:

  • hardware/rockchip/libmpimmz
  • hardware/rockchip/libhwjpeg
  • vendor/rockchip/hardware/interfaces/codec2

解决:

# 对每个模块,删除无效的符号链接并创建 .git/HEAD
for dir in hardware/rockchip/libmpimmz hardware/rockchip/libhwjpeg vendor/rockchip/hardware/interfaces/codec2; do
    cd $dir
    rm -f .git
    mkdir -p .git
    echo "ref: refs/heads/master" > .git/HEAD
    cd -
done

问题 4: libncurses.so.5 找不到

现象: 预编译的 clang-3289846 需要 libncurses.so.5

原因: Ubuntu 26.04 只有 libncurses.so.6,没有 libncurses.so.5

解决:

sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
sudo ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5

问题 5: cpio: command not found

现象: 内核编译时 kernel/gen_kheaders.shcpio: command not found

原因: 内核配置 CONFIG_IKHEADERS=y 需要 cpio 工具生成内核头文件归档。

解决:

sudo apt-get install -y cpio

问题 6: lz4c: not found

现象: 内核编译时 LZ4C arch/arm64/boot/Image.lz4lz4c: not found

原因: 内核配置使用 LZ4 压缩,但系统未安装 lz4 工具。

解决:

sudo apt-get install -y lz4

问题 7: OOM (Out of Memory) - R8 进程被杀死

现象: 编译到 ~81% 时,R8 (ProGuard) 优化步骤报 Remote side unexpectedly closed network connection,进程被 OOM killer 杀死。

原因: 使用 -J32 (32 并行线程) 时,多个 Java/R8 进程同时运行,每个需要大量内存,导致 16GB RAM 耗尽。

解决: 降低并行度:

# 16GB 内存建议使用 -J8
./build.sh -UKA -J8

5. 输出文件

编译完成后,镜像文件位于 rockdev/Image-rk3568_s/

文件大小说明
boot.img~33 MB内核启动镜像
boot-debug.img~33 MB调试版启动镜像
recovery.img~69 MB恢复模式镜像
super.img~1.6 GB系统超级镜像 (包含 system/vendor/product/odm)
uboot.img4 MBU-Boot 镜像
resource.img~965 KB资源镜像 (DTB)
dtbo.img623 BDTBO 镜像
MiniLoaderAll.bin~454 KBRockchip 引导加载器
misc.img48 KBMisc 分区
vbmeta.img4 KBAVB 验证元数据
baseparameter.img1 MB基础参数
config.cfg6 KB分区配置
parameter.txt634 B分区表

6. 烧录说明

使用 RKDevTool (Rockchip 开发工具) 烧录:

  1. 将开发板切换到 Loader 模式 (按住 RECOVERY 键上电)
  2. 打开 RKDevTool
  3. 加载 rockdev/Image-rk3568_s/ 目录下的镜像
  4. 点击 “执行” 开始烧录

如果需要整包烧录,先运行 ./build.sh -u 生成 update.img,然后在 RKDevTool 中选择 “固件升级” 模式加载 update.img


7. 参考

  • 正点原子 RK3568 开发板资料: [ATK-RK3568 用户手册]
  • Rockchip Android 12 SDK 文档: ATK_SDK_Note.md
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值