Ubuntu18.04编译安卓11详细步骤
在 Ubuntu 18.04 上编译 Android 11 的详细步骤
以下是为 Ubuntu 18.04 环境编译 Android 11(AOSP) 的完整指南,涵盖环境配置、源码下载、编译及常见问题解决。
1. 系统要求
操作系统:Ubuntu 18.04 LTS(64位)
内存:至少 16GB RAM(推荐 32GB)
硬盘空间:至少 300GB 可用空间(SSD 更优)
网络:稳定高速连接(源码下载约需 50GB+)
2. 安装依赖工具
更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
安装 Python 3.6+ 和 JDK 8(Android 11 要求)
sudo apt install -y python3 openjdk-8-jdk
sudo update-alternatives --config java # 选择 Java 8
3. 配置环境变量
编辑 ~/.bashrc 或 ~/.zshrc:
添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=JAVAHOME/bin:JAVA_HOME/bin:JAVA
H
OME/bin:PATH
export USE_CCACHE=1
export CCACHE_DIR=/path/to/ccache # 建议设置为大容量分区路径
export CCACHE_SIZE=50G # 设置缓存大小
应用配置:
source ~/.bashrc
ccache -M 50G # 初始化 ccache
4. 安装 Repo 工具
创建 bin 目录并添加到 PATH
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH # 临时生效,如需永久生效需写入 .bashrc
5. 下载 Android 11 源码
创建源码目录
mkdir ~/aosp && cd ~/aosp
初始化仓库(指定 Android 11 分支)
repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r48
同步源码(耗时较长,建议使用 -j4 或更高并发数)
repo sync -j4 --force-sync --no-tags --no-clone-bundle
注意:
若网络不稳定,可使用国内镜像(如清华源)替换 https://android.googlesource.com。
若中断后可运行 repo sync --fail-fast 继续。
6. 准备编译环境
加载编译环境变量
source build/envsetup.sh
选择目标设备(以通用 aosp_arm64-eng 为例)
lunch aosp_arm64-eng # 输入对应编号后回车
7. 开始编译
启动编译(使用 -jN 指定并行任务数,N 通常为 CPU 核心数 × 2)
m -j$(nproc --all)
编译成功标志:
输出 #### build completed successfully ####。
生成的镜像文件位于 out/target/product/generic_arm64/。
8. 运行编译后的镜像
启动模拟器(需提前安装模拟器工具)
emulator
或直接刷入支持的设备(如 Pixel 系列):
adb reboot bootloader
fastboot flashall -w
常见问题解决
1. 内存不足导致编译失败
症状:java.lang.OutOfMemoryError 或 GC overhead limit exceeded
解决:
export JACK_SERVER_VM_ARGUMENTS=“-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g”
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
2. Python 版本冲突
症状:Unsupported Python version 3.x
解决:强制使用 Python 3.6+:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
3. 源码同步失败
症状:error: Exited sync due to fetch errors
解决:
repo sync --force-sync --no-clone-bundle # 重试
或更换镜像源
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r48
4. 缺少依赖库
症状:error: missing libfoo.so
解决:安装对应依赖:
sudo apt install -y libssl-dev libxml2-dev
高级操作
1. 模块化编译
仅编译特定模块(如 Settings):
mmm packages/apps/Settings
2. 生成 OTA 升级包
bash
make otapackage -j$(nproc --all)
3. 清理编译产物
make clobber # 完全清理
make clean # 部分清理
参考资源
官方文档:AOSP Build Instructions
镜像加速:清华 AOSP 镜像使用帮助
————————————————
版权声明:本文为CSDN博主「tslxs」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tslxs/article/details/146422884