Ubuntu 22.04编译AOSP Android 13完整指南
1. 环境准备与系统配置
在Ubuntu 22.04上编译AOSP Android 13需要先完成基础环境搭建。我推荐使用物理机而非虚拟机进行编译,因为Android源码编译对硬件资源要求较高。以下是经过实测的配置方案:
1.1 硬件需求建议
- CPU:至少8核(推荐16核以上)
- 内存:32GB起步(64GB更佳)
- 存储:500GB SSD(源码+编译产物约需300GB)
- 网络:稳定连接(需要下载约50GB源码)
注意:低于此配置可能导致编译时间过长(超过10小时)或内存不足错误
1.2 系统初始化设置
首先更新系统并安装基础工具包:
sudo apt update && sudo apt upgrade -y sudo apt install -y git curl python3 python-is-python3设置交换分区(32GB物理内存以下必须配置):
sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab1.3 依赖包安装
Android官方推荐的依赖包列表需要调整适配Ubuntu 22.04:
sudo apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev \ libc6-dev-i386 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev \ libxml2-utils xsltproc unzip fontconfig python2.7特别处理Python2.7兼容性问题:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 22. 源码获取与同步
2.1 配置Repo工具
创建bin目录并配置环境变量:
mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo echo 'export PATH=~/bin:$PATH' >> ~/.bashrc source ~/.bashrc2.2 初始化代码仓库
建议使用清华镜像源加速下载:
mkdir ~/aosp && cd ~/aosp repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r41配置git身份信息:
git config --global user.name "Your Name" git config --global user.email "you@example.com"2.3 同步源码树
使用多线程加速同步:
repo sync -j$(nproc) --current-branch --no-tags常见同步问题处理:
- 网络中断后恢复同步:
repo sync --fail-fast - 遇到冲突时:
repo forall -c 'git reset --hard'
3. 编译环境配置
3.1 JDK版本管理
Android 13需要JDK 11:
sudo apt install -y openjdk-11-jdk sudo update-alternatives --config java # 选择JDK 11验证Java版本:
java -version # 应显示11.x.x3.2 环境变量设置
编辑~/.bashrc添加:
export USE_CCACHE=1 export CCACHE_EXEC=/usr/bin/ccache export CCACHE_DIR=~/.ccache ccache -M 50G # 设置缓存大小 source ~/.bashrc3.3 设备驱动准备
对于Pixel设备(以Pixel 6为例):
- 从Google开发者网站下载对应驱动
- 解压到AOSP根目录
- 执行sh脚本提取二进制文件
4. 完整编译流程
4.1 初始化编译环境
source build/envsetup.sh lunch aosp_arm64-eng # 根据目标设备选择常见lunch选项:
- aosp_x86_64-eng:x86模拟器
- aosp_oriole-userdebug:Pixel 6
- aosp_raven-userdebug:Pixel 6 Pro
4.2 开始编译
使用多线程编译(建议不超过CPU核心数的1.5倍):
m -j$(($(nproc)*3/2)) 2>&1 | tee build.log监控编译状态:
watch -n 10 'tail -n 20 build.log'4.3 编译产物处理
编译完成后产物位置:
- system.img:out/target/product/[device]/system.img
- ramdisk.img:out/target/product/[device]/ramdisk.img
- userdata.img:out/target/product/[device]/userdata.img
打包完整镜像:
make snod # 快速重建system.img5. 常见问题排查
5.1 内存不足错误
症状:
g++: fatal error: Killed signal terminated program cc1plus解决方案:
- 增加swap空间
- 减少编译线程:
m -j4 - 使用ccache减少重复编译
5.2 Python版本冲突
症状:
File "build/make/core/main.mk", line: Python 2.7 is required解决方案:
sudo update-alternatives --config python # 选择Python 2.75.3 网络问题导致同步失败
建议配置git代理:
git config --global http.proxy http://proxy.example.com:8080或者改用SSH协议:
repo init -u git://mirrors.tuna.tsinghua.edu.cn/aosp/platform/manifest6. 高级技巧与优化
6.1 增量编译加速
- 仅编译特定模块:
m module-name- 快速重建system.img:
make snod- 使用ccache统计:
ccache -s6.2 自定义编译选项
修改build/core/main.mk:
# 添加编译参数 COMMON_GLOBAL_CFLAGS += -DDEBUG=16.3 多设备支持
同时编译多个设备:
lunch aosp_arm64-eng && m -j8 lunch aosp_x86_64-eng && m -j87. 刷机与测试
7.1 刷入Pixel设备
- 解锁bootloader:
fastboot flashing unlock- 刷入镜像:
fastboot flashall -w7.2 模拟器启动
emulator -show-kernel -verbose调试参数:
- -debug:启用调试信息
- -gpu host:使用主机GPU加速
- -no-snapshot:禁用快照
8. 后续开发建议
- 使用Android Studio导入源码:
make idegen && development/tools/idegen/idegen.sh- 常用调试命令:
adb logcat -b all # 查看完整日志 adb shell dumpsys # 系统服务信息- 代码搜索技巧:
cgrep "关键字" # 全代码库搜索 jgrep "关键字" # Java文件搜索