本文将带你一步步完成安卓源码的下载与编译。需要注意的是,AOSP的编译是一个对硬件和网络要求极高的过程,通常仅官方支持的Linux环境(如Ubuntu)和Mac OS能够顺利完成,Windows系统下的WSL(Windows Subsystem for Linux)环境也偶有成功案例,但最稳定的依然是原生Linux。因此,本文将主要基于Ubuntu 20.04或22.04 LTS(长期支持版)环境进行介绍。
2 准备工作:环境与硬件要求
2.1 硬件配置
在开始之前,请务必检查你的硬件。安卓源码体量巨大,编译过程也极其消耗资源。硬盘空间是最大的门槛,随着版本的更新,AOSP对硬盘的要求越来越高。对于Android 14等较新版本,官方推荐至少400GB的可用硬盘空间。内存方面,至少需要16GB,但为了更流畅的编译体验,32GB或以上会更为理想。CPU核心数越多,编译速度越快,推荐使用多核处理器。
2.2 软件环境
操作系统:Ubuntu 20.04 LTS 或 22.04 LTS(64位)。
依赖包:需要安装大量编译所需的工具和库。打开终端,执行以下命令安装基础依赖:
bash
sudoapt-getinstall git-core gnupg flex bison gperf build-essential zipcurl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
此外,Python 3和Git也是必须的。
JDK(Java开发工具包):不同版本的安卓源码对JDK版本有严格的要求。对于较新的版本(如Android 7.0及以上),通常需要OpenJDK 8或更高版本。你可以通过以下命令安装OpenJDK 8:
bash
sudoapt-getinstall openjdk-8-jdk
安装完成后,可以通过
java -version命令确认版本。
3 下载源码:使用Repo工具
安卓源码由数百个Git仓库组成,Google专门为此开发了Repo工具来统一管理这些仓库。Repo本质上是一个基于Python的脚本,它通过一个清单文件(manifest)来协调所有Git仓库的下载与同步。
3.1 安装Repo工具
首先,在主目录下创建一个bin文件夹,并将其添加到环境变量中:
bash
mkdir ~/binPATH=~/bin:$PATH
接着,下载Repo脚本并赋予其可执行权限:
bash
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
如果你的网络环境无法直接访问Google的服务器,可以考虑使用国内的开源镜像站(如清华大学、中国科技大学的AOSP镜像)来下载Repo和源码。
3.2 初始化与同步
创建一个用于存放源码的目录,例如Android:
bash
mkdir Andorid
cdAndorid
接下来,需要配置你的Git信息,否则Repo可能无法正常工作:
bash
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
然后,通过repo init命令初始化仓库。你需要指定一个分支(即版本)。例如,要下载Android 14的代码,无外网权限的可以使用清华镜像下载:
bash
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r54 --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
初始化成功后,执行同步命令开始下载源码:
bash
repo sync -j16
这里的-j16参数表示同时开启16个线程进行下载。你可以根据你的网络带宽适当调整该数字。这个过程耗时较长,可能需要数小时,请耐心等待。
注:下载前最好设置Swap交换空间
# 创建 16GB 交换文件sudo fallocate -l 16G /swapfile
sudochmod600 /swapfile
sudomkswap /swapfile
sudoswapon /swapfile
# 验证生效free-h
4 编译系统:生成镜像文件
源码下载完成后,就可以开始编译了。这一阶段对环境变量和命令的依赖较强。
4.1 设置编译环境
首先,在源码根目录下执行envsetup.sh脚本。这个脚本会加载一系列编译所需的函数和命令:
bash
source build/envsetup.sh
接下来,使用lunch命令选择编译目标。lunch命令后的参数决定了你要为哪个设备编译以及编译的类型(如user用户版、userdebug调试版或eng工程师版)。例如,要为模拟器编译x86架构的调试版,可以使用:
bash
lunch aosp_car_x86_64-eng注:我的电脑为x86_64系统,所以选择的目标为aosp_car_x86_64-eng,当电脑系统与构建目标不一致是,emulator是无法启动模拟器的,最好选择与电脑匹配的目标。
4.2 开始编译
一切就绪后,直接执行make命令即可开始编译:
bash
make -j16
-j16表示启用16个并行任务进行编译。一般建议将并行任务数设置为CPU核心数的1到2倍。如果是第一次编译,这个过程可能会非常漫长,从几个小时到10个小时不等,具体取决于你的CPU性能。编译成功后,终端会显示make completed successfully的提示,生成的镜像文件位于源码目录下的out/target/product/[设备名]/文件夹中。你可以将这些镜像文件刷入设备或启动模拟器进行体验。
5 启动模拟器
执行emulator1.模拟器无法启动,ERROR | x86_64 emulation currently requires hardware acceleration!和CPU acceleration status: KVM requires a CPU that supports vmx or svm 表明你的虚拟机或物理机没有启用硬件虚拟化支持(Intel VT-x 或 AMD SVM)。
1)VirtualBox:勾选 处理器 -> 启用 VT-x/AMD-V 和 启用嵌套分页。VMware:勾选 处理器 -> 虚拟化 Intel VT-x/EPT 或 AMD-V/RVI。

2)安装KVMsudoaptinstall qemu-kvm检查 CPU 虚拟化支持


夜雨聆风