下载 Android 源代码

Android 源代码位于 Google 托管的 Git 存储库集合中。 Git 存储库包含 Android 源代码的整个历史记录,包括对源代码的更改以及更改的时间。本页介绍如何下载源代码。

初始化 Repo 客户端

设置您的客户端以访问 Android 源存储库:

  1. 创建并导航到工作目录:

    $ mkdir WORKING_DIRECTORY
    $ cd WORKING_DIRECTORY
    
  2. 初始化源代码管理的工作目录:

    $ repo init -b main -u https://android.googlesource.com/platform/manifest
    

    -b选项用于标识您正在初始化的分支。如果未提供 -b, repo init默认为主分支。有关分支和标记名称的列表,请参阅源代码标记和构建

    -u选项是必需的,用于指定清单文件,该文件是一个 XML 文件,指定 Android 源中的各个 Git 项目在工作目录中的放置位置。在此示例中,未指定清单文件的名称,因此该命令使用默认清单文件 ( default.xml )。

    输出应包含消息:

    $ repo has been initialized in path_to_working_directory
    

有关清单文件格式的信息,请参阅repo 清单格式

有关所有 Repo 命令的列表,请参阅Repo 命令参考

下载安卓源码

运行以下命令将 Android 源代码树下载到您的工作目录:

$ repo sync -c -j8

-c参数指示 Repo 从服务器获取当前清单分支。 -j8命令将同步分割到线程之间以更快地完成。

此操作应该需要一个多小时。

如果您在下载过程中遇到任何问题,请参阅疑难解答并修复同步问题

下载专有二进制文件

AOSP 可以直接在 Cuttlefish 模拟器上运行,但如果没有额外的设备特定专有库,AOSP 就无法在硬件上使用。以下是获取这些设备二进制文件的方法:

  • 如果您要下载main分支并针对 Nexus 或 Pixel 设备进行构建,请从二进制文件预览站点下载最新的二进制文件。
  • 如果您要下载并构建main分支并为您自己的设备构建,则必须提供特定于设备的二进制文件。
  • 如果您要为 Nexus 或 Pixel 设备下载和构建标记的非主分支和构建,请从Nexus 和 Pixel 设备的二进制文件下载设备特定的二进制文件。

提取专有二进制文件

每组二进制文件都是压缩存档中的自解压脚本。要提取这些二进制文件并将其放置在源树的正确位置:

  1. 提取存档。
  2. 从 AOSP 源代码树的根运行包含的自解压 shell 脚本。
  3. 同意随附的许可协议的条款。二进制文件及其匹配的 makefile 安装在源树的vendor/层次结构中。

(可选)验证代码合法性

如果您担心源代码的合法性,例如它是否来自 Google,您可以验证分支的 git 标签。要验证 Git 标签:

  1. 将以下密钥块复制并粘贴到文本文件中,例如keyfile.asc

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2.2 (GNU/Linux)
    
    mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
    lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
    8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
    u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
    wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
    /HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
    jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
    MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
    b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
    aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
    cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
    gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
    2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
    QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
    hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
    C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
    LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
    OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
    pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
    KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
    N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
    vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
    G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
    hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
    EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
    =Wi5D
    -----END PGP PUBLIC KEY BLOCK-----
    
  2. 运行以下命令将公钥输入到 GnuPG 密钥数据库中。该密钥用于签署代表版本的带注释的标签。

    $ gpg --import keyfile.asc
    
  3. 导入密钥后,您可以通过运行以下命令来验证任何标签:

    $ git tag -v TAG_NAME