保姆级教程:在Ubuntu 24.04上搞定AOSP源码下载与编译(附国内镜像加速)
零基础玩转AOSP:Ubuntu 24.04环境下的源码编译实战指南
1. 环境准备与系统配置
在开始AOSP源码编译之前,确保你的Ubuntu 24.04系统满足以下硬件要求:
- 存储空间:至少250GB可用空间(源码下载约80GB,编译后占用更多)
- 内存:16GB以上(推荐32GB以获得更好体验)
- CPU:6核以上处理器(编译过程非常消耗CPU资源)
对于国内开发者,建议使用清华大学的Ubuntu镜像源进行系统更新:
sudo sed -i 's|http://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list sudo apt update && sudo apt upgrade -y安装基础依赖工具链:
sudo apt install -y git-core gnupg flex bison build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ libncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev \ libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig提示:如果使用虚拟机环境,建议分配至少8核CPU和32GB内存,并启用KVM加速以获得更好的编译性能。
2. 开发工具链配置
2.1 Java环境安装
AOSP不同版本需要特定Java开发工具包:
| AOSP版本 | JDK版本 | 安装命令 |
|---|---|---|
| Android 7-8 | OpenJDK 8 | sudo apt install openjdk-8-jdk |
| Android 9+ | OpenJDK 11 | sudo apt install openjdk-11-jdk |
设置默认JDK版本:
sudo update-alternatives --config java sudo update-alternatives --config javac2.2 Git配置
正确配置Git信息对代码提交至关重要:
git config --global user.name "YourName" git config --global user.email "your.email@example.com" git config --global color.ui auto2.3 Repo工具安装
Repo是管理多个Git仓库的工具,国内建议使用清华镜像:
mkdir ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo chmod a+x ~/bin/repo将以下内容添加到~/.bashrc文件末尾:
export PATH=~/bin:$PATH export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'使配置立即生效:
source ~/.bashrc3. 源码下载与同步
3.1 初始化仓库
创建工作目录并初始化仓库:
mkdir ~/aosp && cd ~/aosp repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-14.0.0_r2常用分支版本对照表:
| Android版本 | 分支名称 | API级别 |
|---|---|---|
| Android 14 | android-14.0.0_r2 | 34 |
| Android 13 | android-13.0.0_r3 | 33 |
| Android 12 | android-12.1.0_r5 | 32 |
3.2 同步源码
使用以下命令开始同步源码:
repo sync -j8 --current-branch --no-tags遇到网络中断时,可以恢复同步:
repo sync -j8 --fail-fast注意:同步过程可能需要数小时,建议在稳定的网络环境下进行,可以使用
screen或tmux保持会话。
4. 编译环境准备
4.1 环境变量设置
加载编译环境脚本:
source build/envsetup.sh4.2 选择编译目标
查看可用设备列表:
lunch常见编译目标说明:
- aosp_arm-eng:ARM架构模拟器,带调试功能
- aosp_x86_64-eng:x86_64架构模拟器,带调试功能
- aosp_car_x86_64-userdebug:车载系统x86_64架构,用户调试版本
选择目标:
lunch aosp_x86_64-eng5. 开始编译系统
5.1 全系统编译
使用make命令开始编译:
make -j$(nproc)编译过程监控技巧:
- 查看CPU使用率:
htop - 监控磁盘空间:
df -h - 查看编译进度:
tail -f out/verbose.log.gz
5.2 常见编译问题解决
内存不足:添加交换分区
sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfileJava版本冲突:确保使用正确的JDK版本
依赖缺失:根据错误提示安装缺失的软件包
6. 运行编译结果
6.1 启动模拟器
编译完成后直接启动:
emulator自定义启动参数:
emulator -no-snapshot -no-audio -no-window -gpu off -memory 40966.2 刷入实体设备
将系统镜像刷入支持解锁的Pixel设备:
fastboot flashall -w7. 模块化开发技巧
7.1 单独编译模块
常用模块编译命令:
| 命令 | 功能描述 |
|---|---|
mm | 编译当前目录模块 |
mma | 编译当前目录及依赖模块 |
mmma dir | 编译指定目录下的模块 |
m libart | 编译特定模块(如libart) |
7.2 常见模块编译示例
编译Framework资源:
make framework-res编译SystemUI:
make SystemUI编译Settings应用:
make Settings8. 开发调试技巧
8.1 ADB调试
常用ADB命令:
adb logcat -v threadtime # 查看详细日志 adb shell dumpsys package <package> # 查看包信息 adb shell am start -n <activity> # 启动Activity8.2 系统属性修改
临时修改属性:
adb shell setprop <key> <value>永久修改需要修改build.prop并重新编译系统。
8.3 性能分析工具
systrace:系统级性能分析
python systrace.py -o mytrace.html sched freq idle am wm gfx viewperfetto:新一代性能分析工具
adb shell perfetto --txt -c /data/misc/perfetto-configs/battery_config.pbtxt -o /data/misc/perfetto-traces/battery_trace
9. 进阶开发指南
9.1 自定义系统组件
添加新系统服务步骤:
- 创建服务Java接口(
frameworks/base/core/java/android/app/IMyService.aidl) - 实现服务(
frameworks/base/services/core/java/com/android/server/MyService.java) - 注册服务(修改
SystemServer.java) - 添加权限(
frameworks/base/core/res/AndroidManifest.xml)
9.2 内核开发
下载对应内核源码:
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/common.git编译内核:
make -C kernel/msm-3.18 O=out ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- menuconfig make -C kernel/msm-3.18 O=out ARCH=arm64 CROSS_COMPILE=aarch64-linux-android-9.3 SELinux策略修改
调试SELinux策略:
adb shell dmesg | grep avc # 查看SELinux拒绝日志 adb shell su root cat /sys/fs/selinux/policy > sepolicy # 导出策略添加新策略:
audit2allow -i avc_log.txt > mypolicy.te10. 持续集成与自动化
10.1 增量编译优化
启用ccache加速后续编译:
export USE_CCACHE=1 export CCACHE_DIR=/path/to/ccache prebuilts/misc/linux-x86/ccache/ccache -M 50G10.2 自动化构建脚本
示例构建脚本:
#!/bin/bash # 初始化环境 source build/envsetup.sh # 选择目标 lunch aosp_x86_64-eng # 清理旧构建 make clobber # 开始构建 START_TIME=$SECONDS make -j$(nproc) 2>&1 | tee build.log ELAPSED_TIME=$(($SECONDS - $START_TIME)) echo "构建完成,耗时: $(($ELAPSED_TIME/60))分$(($ELAPSED_TIME%60))秒"10.3 容器化构建环境
使用Docker创建可移植的构建环境:
FROM ubuntu:24.04 RUN apt update && apt install -y git-core gnupg flex bison build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ libncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev \ libgl1-mesa-dev libxml2-utils xsltproc unzip python3 RUN useradd -m builder USER builder WORKDIR /home/builder