针对 AOSP 开发进行设置(9.0 或更高版本)

在下载并构建 Android 源代码的main分支之前,请确保您的硬件满足必要的要求并且所需的软件已正确安装。您还应该熟悉以下术语:

git
Git 是一个免费开源的分布式版本控制系统。 Android 使用 Git 进行本地操作,例如分支、提交、差异和编辑。如需学习 Git 的帮助,请参阅Git 文档
回购协议
Repo 是 Git 的 Python 包装器,可简化跨多个 Git 存储库执行复杂的操作。 Repo 并不会取代 Git 的所有版本控制操作,它只是使复杂的 Git 操作更容易完成。 Repo 使用清单文件将 Git 项目聚合到 Android 超级项目中。
清单文件
清单文件是一个 XML 文件,指定 Android 源代码中的各个 Git 项目在 AOSP 源代码树中的放置位置。

满足硬件要求

您的开发工作站应满足或超过以下硬件要求:

  • 64 位系统。

  • 至少 400 GB 可用磁盘空间用于签出和构建代码(250 GB 用于签出 + 150 GB 用于构建)。

  • 至少 64 GB RAM。 Google 使用 72 核、64 GB RAM 的机器来构建 Android。使用此硬件配置,完整构建 Android 大约需要 40 分钟,增量构建 Android 只需几分钟。相比之下,使用具有 64 GB RAM 的 6 核计算机进行完整构建大约需要 6 小时。

满足操作系统要求

您的开发工作站必须运行带有 GNU C Library (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 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

在安装的软件包中,此命令安装 Git,用于下载 AOSP 源。

安装所需软件

在使用 AOSP 之前,您必须安装 OpenJDK、Make、Python 3 和 Repo。 Android 的 AOSP 主分支附带了 OpenJDK、Make 和 Python 3 的预构建版本,因此不需要额外的安装步骤。以下部分介绍如何安装 Repo。

安装仓库

请按照以下步骤安装 Repo:

  1. 下载当前包信息:

    sudo apt-get update
    
  2. 运行以下命令来安装 Repo 启动器:

    sudo apt-get install repo
    

    Repo 启动器提供了一个 Python 脚本,用于初始化结帐并下载完整的 Repo 工具。

    如果成功,请跳至步骤 4。

  3. (可选)使用以下一系列命令手动安装 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 启动器。

  4. 验证 Repo 启动器版本:

    repo version
    

    输出应指示 2.5 或更高版本,例如:

    repo launcher version 2.40

设置备用输出目录

默认情况下,每个构建的输出都存储在匹配源树的out/子目录中。您可以通过导出OUT_DIR环境变量来覆盖此目录。例如,如果您想将输出存储在不同的驱动器上,您可以将OUT_DIR指向该驱动器:

export OUT_DIR=my_other_drive

下一步是什么?

,

在下载并构建 Android 源代码的main分支之前,请确保您的硬件满足必要的要求并且所需的软件已正确安装。您还应该熟悉以下术语:

git
Git 是一个免费开源的分布式版本控制系统。 Android 使用 Git 进行本地操作,例如分支、提交、差异和编辑。如需学习 Git 的帮助,请参阅Git 文档
回购协议
Repo 是 Git 的 Python 包装器,可简化跨多个 Git 存储库执行复杂的操作。 Repo 并不会取代 Git 的所有版本控制操作,它只是使复杂的 Git 操作更容易完成。 Repo 使用清单文件将 Git 项目聚合到 Android 超级项目中。
清单文件
清单文件是一个 XML 文件,指定 Android 源代码中的各个 Git 项目在 AOSP 源代码树中的放置位置。

满足硬件要求

您的开发工作站应满足或超过以下硬件要求:

  • 64 位系统。

  • 至少 400 GB 可用磁盘空间用于签出和构建代码(250 GB 用于签出 + 150 GB 用于构建)。

  • 至少 64 GB RAM。 Google 使用 72 核、64 GB RAM 的机器来构建 Android。使用此硬件配置,完整构建 Android 大约需要 40 分钟,增量构建 Android 只需几分钟。相比之下,使用具有 64 GB RAM 的 6 核计算机进行完整构建大约需要 6 小时。

满足操作系统要求

您的开发工作站必须运行任何带有 GNU C Library (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 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

在安装的软件包中,此命令安装 Git,用于下载 AOSP 源。

安装所需软件

在使用 AOSP 之前,您必须安装 OpenJDK、Make、Python 3 和 Repo。 Android 的 AOSP 主分支附带了 OpenJDK、Make 和 Python 3 的预构建版本,因此不需要额外的安装步骤。以下部分介绍如何安装 Repo。

安装仓库

请按照以下步骤安装 Repo:

  1. 下载当前包信息:

    sudo apt-get update
    
  2. 运行以下命令来安装 Repo 启动器:

    sudo apt-get install repo
    

    Repo 启动器提供了一个 Python 脚本,用于初始化结帐并下载完整的 Repo 工具。

    如果成功,请跳至步骤 4。

  3. (可选)使用以下一系列命令手动安装 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 启动器。

  4. 验证 Repo 启动器版本:

    repo version
    

    输出应指示 2.5 或更高版本,例如:

    repo launcher version 2.40

设置备用输出目录

默认情况下,每个构建的输出都存储在匹配源树的out/子目录中。您可以通过导出OUT_DIR环境变量来覆盖此目录。例如,如果您想将输出存储在不同的驱动器上,您可以将OUT_DIR指向该驱动器:

export OUT_DIR=my_other_drive

下一步是什么?