)
保姆级教程在Ubuntu 18.04上从零编译瑞芯微RK3568的Android 11源码第一次接触Android系统移植的开发者面对庞大的源码和复杂的编译环境往往会感到无从下手。本文将手把手带你完成从Ubuntu系统配置到最终镜像生成的全过程特别针对RK3568开发板进行优化适配。不同于简单的操作记录我们会深入每个步骤背后的原理并分享实际项目中积累的调试技巧。1. 环境准备与基础配置1.1 硬件与系统要求在开始之前请确保你的开发机满足以下最低配置要求组件最低要求推荐配置内存16GB32GB存储300GB SSD1TB NVMeCPU4核8核系统Ubuntu 18.04 64位Ubuntu 20.04 LTS为什么选择Ubuntu 18.04这是Google官方推荐的AOSP编译环境对新老硬件都有较好的兼容性。如果你使用其他Linux发行版可能会遇到依赖库版本冲突的问题。1.2 基础工具链安装首先更新软件源并安装必要的开发工具sudo apt update sudo apt upgrade -y sudo apt install -y git curl python3配置Git用户信息后续repo工具会用到git config --global user.name Your Name git config --global user.email your.emailexample.com验证配置是否生效git config --list2. 源码获取与repo工具配置2.1 repo工具安装与配置repo是Google开发的用于管理多个Git仓库的工具。由于网络原因建议使用国内镜像源mkdir -p ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo chmod ax ~/bin/repo将repo添加到PATH环境变量echo export PATH$PATH:~/bin ~/.bashrc source ~/.bashrc2.2 AOSP源码下载对于RK3568开发板我们需要特定版本的Android 11源码。清华镜像源提供了完整的AOSP仓库mkdir ~/aosp cd ~/aosp repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r48开始同步源码建议使用-j4参数根据CPU核心数调整repo sync -j4常见问题处理同步中断执行repo sync -j4 --fail-fast继续空间不足使用df -h检查磁盘空间建议保留至少200GB空闲3. 编译环境配置3.1 安装依赖包Android编译需要大量开发库支持执行以下命令安装sudo apt 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 \ fontconfig python-is-python33.2 JDK安装Android 11需要OpenJDK 8sudo apt install -y openjdk-8-jdk验证Java版本java -version # 应显示 openjdk version 1.8.0_xxx4. RK3568专用配置与编译4.1 设备特定源码准备从瑞芯微获取的BSP包通常包含以下关键目录device/rockchip/rk356x/ kernel/ u-boot/ vendor/rockchip/将这些目录复制到AOSP源码对应位置覆盖原有文件。4.2 环境初始化source build/envsetup.sh lunch rk3568_r-userdebug选项说明rk3568_r-userdebug带调试符号的user版本rk3568_r-eng工程师版本更多调试功能4.3 开始编译使用瑞芯微提供的一键编译脚本./build.sh -UKAup参数解析-U编译U-Boot-K编译Kernel-A编译Android-u生成update.img-p打包镜像编译过程可能需要2-6小时取决于硬件性能。建议使用-jN参数NCPU核心数*1.5来加速make -j125. 输出镜像与烧录编译完成后在out/target/product/rk3568_r/目录下会生成以下关键文件文件说明boot.img内核和初始RAM磁盘system.imgAndroid系统镜像vendor.img厂商定制内容update.img完整升级包使用瑞芯微提供的烧录工具RKDevTool将镜像写入开发板开发板进入Loader模式按住Recovery键上电连接USB到PC运行RKDevTool加载update.img点击执行开始烧录6. 常见问题排查6.1 编译错误处理案例1Java版本冲突You are attempting to build with the incorrect version of java解决方案sudo update-alternatives --config java # 选择Java 8案例2内存不足Out of memory error解决方法增加swap空间减少编译线程数make -j46.2 启动问题如果系统无法正常启动可以通过串口查看内核日志sudo apt install minicom minicom -D /dev/ttyUSB0 -b 1500000常见启动问题缺少驱动检查kernel config是否正确分区表错误确认parameter.txt配置文件系统损坏重新烧录vendor.img7. 进阶调试技巧7.1 单独编译模块修改单个模块后无需全量编译mmm packages/apps/Settings7.2 生成补丁文件使用repo创建提交补丁repo start branch-name . git add . git commit -m your changes repo upload --current-branch7.3 性能优化建议使用ccache加速后续编译export USE_CCACHE1 ccache -M 50G在build/core/ccache.mk中设置CCACHE_DIR到高速存储在RK3568开发过程中我发现最耗时的往往是第一次编译后的增量构建。合理使用ccache可以将后续编译时间缩短60%以上。另外记得定期执行make clean来避免一些奇怪的缓存问题。