)
RK3568 Android 12 编译指南 (正点原子)环境信息项目值开发板正点原子 ATK-RK3568Android 版本Android 12 (SQ3A.220605.009.B1)内核版本Linux 4.19Kernel DTSrk3568-atk-evb1-ddr4-v10U-Boot 配置rk3568Kernel 配置rockchip_defconfig目标产品rk3568_s-userdebugSDK 版本ATK_SDK v1.1编译主机WSL2 (Ubuntu 26.04 LTS)CPU32 cores内存16 GB磁盘~633 GB 可用1. 环境准备1.1 安装必要工具包# 基础工具sudoapt-getupdatesudoapt-getinstall-yopenjdk-8-jdksudoapt-getinstall-ygit-core gnupg flex bison build-essential\zipcurlzlib1g-dev gcc-multilib g-multilib libc6-dev-i386\libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev\lib32z1-dev libgl1-mesa-dev libxml2-utils xsltprocunzip\device-tree-compiler python2 python3 lz4 cpio1.2 配置 Java 环境exportJAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64exportPATH$JAVA_HOME/bin:$PATH2. 解压源码2.1 解压分卷 ZIP源码以 4 个分卷 ZIP 形式提供03android12_sdk.zip.001 03android12_sdk.zip.002 03android12_sdk.zip.003 03android12_sdk.zip.004使用 7zip 合并解压7z x 03*.zip.001解压后得到一个.tgz文件约 32GB。2.2 解压 TGZtar-xzffilename.tgz解压后得到rk3568_android12_SDK/目录。3. 编译3.1 加载编译环境cd~/rk/rk3568_android12_SDKsourcebuild/envsetup.sh lunch rk3568_s-userdebug3.2 一键编译 (U-Boot Kernel Android)# -Uuboot -Kkernel -AAndroid -J并行线程数# 注意16GB 内存建议使用 -J8避免 OOM./build.sh-UKA-J8编译完成后镜像文件自动输出到rockdev/Image-rk3568_s/。3.3 生成 update.img (可选)./build.sh-u4. 编译过程中遇到的问题及解决方案问题 1:python2: not found现象: U-Boot 编译时make.sh脚本检查python2不存在。原因: Ubuntu 26.04 默认不带python2但 U-Boot 的make.sh使用make PYTHONpython2。解决:sudoln-sf/usr/bin/python3 /usr/bin/python2问题 2: Python 2 语法错误现象: 内核编译时kernel-4.19/scripts/mkmultidtb.py报语法错误。原因: 该脚本使用 Python 2 的print语句如print __doc__但系统使用 Python 3 解释。解决:# 修改 shebang 为 python3sed-is|#!/usr/bin/env python|#!/usr/bin/env python3|kernel-4.19/scripts/mkmultidtb.py# 修复 print 语句sed-is/print __doc__/print(__doc__)/kernel-4.19/scripts/mkmultidtb.pysed-is/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/libmpimmzhardware/rockchip/libhwjpegvendor/rockchip/hardware/interfaces/codec2解决:# 对每个模块删除无效的符号链接并创建 .git/HEADfordirinhardware/rockchip/libmpimmz hardware/rockchip/libhwjpeg vendor/rockchip/hardware/interfaces/codec2;docd$dirrm-f.gitmkdir-p.gitechoref: refs/heads/master.git/HEADcd-done问题 4:libncurses.so.5找不到现象: 预编译的clang-3289846需要libncurses.so.5。原因: Ubuntu 26.04 只有libncurses.so.6没有libncurses.so.5。解决:sudoln-sf/usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5sudoln-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.sh报cpio: command not found。原因: 内核配置CONFIG_IKHEADERSy需要cpio工具生成内核头文件归档。解决:sudoapt-getinstall-ycpio问题 6:lz4c: not found现象: 内核编译时LZ4C arch/arm64/boot/Image.lz4报lz4c: not found。原因: 内核配置使用 LZ4 压缩但系统未安装lz4工具。解决:sudoapt-getinstall-ylz4问题 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-J85. 输出文件编译完成后镜像文件位于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 开发工具) 烧录将开发板切换到Loader 模式(按住 RECOVERY 键上电)打开 RKDevTool加载rockdev/Image-rk3568_s/目录下的镜像点击 “执行” 开始烧录如果需要整包烧录先运行./build.sh -u生成update.img然后在 RKDevTool 中选择 “固件升级” 模式加载update.img。7. 参考正点原子 RK3568 开发板资料: [ATK-RK3568 用户手册]Rockchip Android 12 SDK 文档:ATK_SDK_Note.md