1. 源码下载(国内加速方案)
1.1 准备工作
-
系统要求:推荐 Ubuntu 22.04 LTS(官方支持)或 macOS(部分限制)。
-
磁盘空间:至少 250GB(源码 + 编译产物)。
-
工具安装:
# Ubuntu/Debian sudo apt update sudo apt install -y git python3 python3-pip curl openjdk-11-jdk sudo apt install -y repo # 如果系统仓库有 repo 工具
1.2 使用清华镜像加速下载
# 1. 设置 repo 使用清华镜像
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
# 2. 初始化仓库(选择分支,如 android-14.0.0_r29)
mkdir ~/aosp && cd ~/aosp
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r29
# 3. 同步代码(-j8 表示并行下载,根据网络调整)
repo sync -j8
注:
- 如果中断,可重新运行
repo sync继续下载。 - 国内用户建议夜间同步(速度可能更快)。
2. 环境配置
2.1 安装编译依赖
# Ubuntu/Debian
sudo apt install -y git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
# macOS(需先安装 Xcode 和命令行工具)
xcode-select --install
brew install coreutils findutils gawk gnupg libffi libxml2 libxslt lz4 python@3.11
2.2 配置 Java 环境
- AOSP 推荐 OpenJDK 11(Android 13+ 要求):
sudo apt install openjdk-11-jdk export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH
3. 编译 AOSP
3.1 初始化编译环境
cd ~/aosp
source build/envsetup.sh # 加载环境变量
lunch # 选择目标设备
-
选择编译目标(例如):
aosp_arm-eng:ARM 架构模拟器(带调试功能)aosp_x86_64-eng:x86_64 模拟器(性能更好)
3.2 开始编译
make -j$(nproc) # 使用所有 CPU 核心加速编译
编译时间:
- 首次编译需 3~6 小时(取决于 CPU 和磁盘速度)。
- 成功后输出镜像在
out/target/product/[设备名]/目录。
4. 运行 AOSP
4.1 使用模拟器
emulator # 自动加载刚编译的镜像
-
如果提示
emulator: command not found,先运行:source build/envsetup.sh lunch aosp_x86_64-eng # 确保选择模拟器目标
4.2 刷入真机(可选)
-
支持的设备:Pixel 系列(如 Pixel 6,需解锁 Bootloader)。
-
步骤:
-
下载对应版本的 Factory Image。
-
刷入编译后的
system.img和boot.img:adb reboot bootloader fastboot flash system system.img fastboot flash boot boot.img fastboot reboot
-
5. 开发工具推荐
5.1 代码阅读
- Android Studio:导入 AOSP 子模块(如
frameworks/base)。 - VS Code + Ctags:轻量级代码导航。
5.2 调试工具
-
logcat:查看系统日志:
adb logcat -
systrace:分析性能问题:
python3 systrace.py -o trace.html sched freq idle
6. 常见问题解决
6.1 下载中断
- 重新运行
repo sync,或手动删除.repo/projects/中报错的目录。
6.2 编译失败
- 错误:
Out of memory
解决:减少并行任务数(make -j4)。 - 错误:
Java version mismatch
解决:确保使用 OpenJDK 11,并检查JAVA_HOME。
6.3 模拟器黑屏
-
尝试换用
aosp_x86_64-eng目标,或更新 GPU 驱动:emulator -gpu host # 强制使用硬件加速
7. 后续学习建议
-
重点目录:
/frameworks/base:核心服务(ActivityManager、WindowManager)。/system/core:Init、ADB 等底层组件。
-
官方文档: