在您下载和构建 Android 源代码的 main
分支之前,请确保您的硬件满足必要的要求,并且已正确安装所需的软件。您还应该熟悉以下术语
- Git
- Git 是一个免费且开源的分布式版本控制系统。Android 使用 Git 进行本地操作,例如分支、提交、差异和编辑。如需了解 Git 方面的帮助,请参阅 Git 文档。
- Repo
- Repo 是 Git 的 Python 封装容器,可简化跨多个 Git 代码库执行复杂操作的过程。Repo 并未取代 Git 的所有版本控制操作,而只是让复杂的 Git 操作更易于完成。Repo 使用清单文件将 Git 项目聚合到 Android 超级项目中。
- 清单文件
- 清单文件是一个 XML 文件,用于指定 Android 源代码中的各种 Git 项目在 AOSP 源代码树中的位置。
满足硬件要求
您的开发工作站应满足或超过以下硬件要求
64 位 x86 系统。
至少 400 GB 的可用磁盘空间用于检出和构建代码(250 GB 用于检出 + 150 GB 用于构建)。
至少 64 GB 的 RAM。Google 使用配备 64 GB RAM 的 72 核计算机来构建 Android。使用此硬件配置,完整构建 Android 大约需要 40 分钟,而增量构建 Android 仅需几分钟。相比之下,使用配备 64 GB RAM 的 6 核计算机完整构建需要大约 6 个小时。
满足操作系统要求
您的开发工作站必须运行任何 64 位 Linux 发行版,且该发行版带有 GNU C Library (glibc) 2.17 或更高版本。
安装必需的软件包
要构建 Android 11 或更高版本,您必须使用 Ubuntu 18.04 或更高版本。要为 Ubuntu 18.04 或更高版本安装必需的软件包,请运行以下命令
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
在此命令安装的软件包中,包括用于下载 AOSP 源代码的 Git。
安装必需的软件
在使用 AOSP 之前,您必须安装 OpenJDK、Make、Python 3 和 Repo。Android 的 AOSP main 分支附带了 OpenJDK、Make 和 Python 3 的预构建版本,因此无需额外的安装步骤。以下部分介绍了如何安装 Repo。
安装 Repo
按照以下步骤安装 Repo
下载当前的软件包信息
sudo apt-get update
运行以下命令以安装 Repo 启动器
sudo apt-get install repo
Repo 启动器提供了一个 Python 脚本,用于初始化检出并下载完整的 Repo 工具。
如果成功,请跳到第 4 步。
(可选)使用以下一系列命令手动安装 Repo
export REPO=$(mktemp /tmp/repo.XXXXXXXXX) curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65 curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo
前三个命令用于设置临时文件、将 Repo 下载到该文件,并验证提供的密钥是否与所需的密钥匹配。如果这些命令成功执行,则最后一个命令会安装 Repo 启动器。
验证 Repo 启动器版本
repo version
输出应指示版本为 2.4 或更高版本,例如
repo launcher version 2.45
设置备用输出目录
默认情况下,每次构建的输出都存储在匹配源代码树的 out/
子目录中。您可以通过导出 OUT_DIR
环境变量来替换此目录。例如,如果您想将输出存储在不同的驱动器上,可以将 OUT_DIR
指向该驱动器
export OUT_DIR=my_other_drive
下一步操作?
- 要下载源代码,请继续阅读下载 Android 源代码。
- 如需了解 Git 方面的帮助,请参阅 Git 文档。
- 如需更多 Repo 文档,请参阅 Repo README。
- 如需查看所有 Repo 命令的列表,请参阅Repo 命令参考。