在下载和构建 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 使用 72 核机器和 64 GB RAM 来构建 Android。采用此硬件配置时,一个完整的 Android build 大约需要 40 分钟;Android 增量 build 大约需要几分钟的时间。相比之下,使用 6 核机器和 64 GB RAM 构建一个完整 build 大约需要 6 个小时。
满足操作系统要求
开发工作站必须运行采用 GNU C 库 (glibc) 2.17 或更高版本的任何 64 位 Linux 发行版。
安装必需的软件包
如需构建 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。
安装必需的软件
您必须先安装 OpenJDK、Make、Python 3 和 Repo,然后才能使用 AOSP。Android 的 AOSP 主分支附带预构建版本的 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 自述文件。
- 如需查看所有 Repo 命令的列表,请参阅 Repo 命令参考文档。