news 2026/5/31 9:49:01

保姆级教程:在Ubuntu 18.04上从零编译瑞芯微RK3568的Android 11源码(含AOSP下载与repo配置)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在Ubuntu 18.04上从零编译瑞芯微RK3568的Android 11源码(含AOSP下载与repo配置)

保姆级教程:在Ubuntu 18.04上从零编译瑞芯微RK3568的Android 11源码

第一次接触Android系统移植的开发者,面对庞大的源码和复杂的编译环境往往会感到无从下手。本文将手把手带你完成从Ubuntu系统配置到最终镜像生成的全过程,特别针对RK3568开发板进行优化适配。不同于简单的操作记录,我们会深入每个步骤背后的原理,并分享实际项目中积累的调试技巧。

1. 环境准备与基础配置

1.1 硬件与系统要求

在开始之前,请确保你的开发机满足以下最低配置要求:

组件最低要求推荐配置
内存16GB32GB+
存储300GB SSD1TB NVMe
CPU4核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.email@example.com"

验证配置是否生效:

git config --list

2. 源码获取与repo工具配置

2.1 repo工具安装与配置

repo是Google开发的用于管理多个Git仓库的工具。由于网络原因,建议使用国内镜像源:

mkdir -p ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo chmod a+x ~/bin/repo

将repo添加到PATH环境变量:

echo 'export PATH=$PATH:~/bin' >> ~/.bashrc source ~/.bashrc

2.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-python3

3.2 JDK安装

Android 11需要OpenJDK 8:

sudo apt install -y openjdk-8-jdk

验证Java版本:

java -version # 应显示 openjdk version "1.8.0_xxx"

4. 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参数(N=CPU核心数*1.5)来加速:

make -j12

5. 输出镜像与烧录

编译完成后,在out/target/product/rk3568_r/目录下会生成以下关键文件:

文件说明
boot.img内核和初始RAM磁盘
system.imgAndroid系统镜像
vendor.img厂商定制内容
update.img完整升级包

使用瑞芯微提供的烧录工具RKDevTool将镜像写入开发板:

  1. 开发板进入Loader模式(按住Recovery键上电)
  2. 连接USB到PC
  3. 运行RKDevTool,加载update.img
  4. 点击"执行"开始烧录

6. 常见问题排查

6.1 编译错误处理

案例1:Java版本冲突

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 -j4

6.2 启动问题

如果系统无法正常启动,可以通过串口查看内核日志:

sudo apt install minicom minicom -D /dev/ttyUSB0 -b 1500000

常见启动问题:

  • 缺少驱动:检查kernel config是否正确
  • 分区表错误:确认parameter.txt配置
  • 文件系统损坏:重新烧录vendor.img

7. 进阶调试技巧

7.1 单独编译模块

修改单个模块后无需全量编译:

mmm packages/apps/Settings

7.2 生成补丁文件

使用repo创建提交补丁:

repo start branch-name . git add . git commit -m "your changes" repo upload --current-branch

7.3 性能优化建议

  • 使用ccache加速后续编译:
export USE_CCACHE=1 ccache -M 50G
  • build/core/ccache.mk中设置CCACHE_DIR到高速存储

在RK3568开发过程中,我发现最耗时的往往是第一次编译后的增量构建。合理使用ccache可以将后续编译时间缩短60%以上。另外,记得定期执行make clean来避免一些奇怪的缓存问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 9:47:59

从代码实现到算法思维:开发者核心竞争力迁移与未来技能栈演进

1. 从“写代码”到“设计算法”:一场思维范式的根本性转变“未来是算法的,而非代码的。” 这句话在技术圈流传已久,乍一听像是一句空洞的预言,但当你真正在项目一线摸爬滚打十几年后,回头再看,会发现它精准…

作者头像 李华
网站建设 2026/5/31 9:47:58

JetBrains IDE评估期重置解决方案的技术实现与应用指南

JetBrains IDE评估期重置解决方案的技术实现与应用指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 在软件开发实践中,JetBrains系列IDE凭借其强大的功能集成和优秀的用户体验,已成为众…

作者头像 李华
网站建设 2026/5/31 9:47:07

【架构实战】Canal数据同步:MySQL数据变更实时捕获

一、一次数据不一致让我通宵排查 2019年,我们的订单系统和财务系统数据不一致,差了2000多条记录。 财务那边说订单金额和财务对账对不上,让我们查。我花了整整一个通宵,逐条对比两个系统的数据库,发现是同步脚本漏跑了…

作者头像 李华
网站建设 2026/5/31 9:46:54

如何快速备份QQ空间:GetQzonehistory终极数据保护指南

如何快速备份QQ空间:GetQzonehistory终极数据保护指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在担心那些承载着青春回忆的QQ空间说说不小心丢失吗?Get…

作者头像 李华