Android 源代码位于由 Google 托管的一组 Git 仓库中。Git 仓库包含 Android 源代码的完整历史记录,其中包括对源代码的更改以及更改时间。本页介绍了如何下载源代码。
初始化 Repo 客户端
设置您的客户端以访问 Android 源代码库:
创建并前往工作目录:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
初始化工作目录以便控制源代码:
repo init --partial-clone -b main -u https://android.googlesource.com/platform/manifest
-b
选项用于标识您正在初始化的分支。如果 -b 未提供,则repo init
默认采用主分支。如需查看分支和标记名称的列表,请参阅源代码标记和 build。-u
是必需选项,用于指定清单文件。清单是一个 XML 文件,用于指定 Android 源代码中的各种 Git 项目位于工作目录的什么位置。manifest 在此示例中,清单文件的名称未指定,因此命令使用默认清单文件 (default.xml
)。输出应包含以下消息:
repo has been initialized in path_to_working_directory
如需了解清单文件格式,请参阅 Repo 清单格式。
如需所有 Repo 命令的列表,请参阅 Repo 命令参考文档。
下载 Android 源代码
运行以下命令,将 Android 源代码树下载到您的工作目录:
$ repo sync -c -j8
-c
参数会指示 Repo 从服务器提取当前的清单分支。-j8
命令会将同步操作拆分成多个线程,以更快地完成同步。
此操作应该需要一小时多一点的时间。
如果您在下载期间遇到任何问题,请参阅排查并解决同步问题。
下载专有二进制文件
AOSP 可以直接在 Cuttlefish 模拟器上运行,但若没有额外的设备专用专有库,AOSP 无法用在硬件上。获取这些设备二进制文件的方法如下:
- 如要下载
main
分支并针对 Nexus 或 Pixel 设备进行构建,请从二进制文件预览网站下载最新的二进制文件。 - 如要下载和构建
main
分支,并针对您自己的设备进行构建,您必须提供特定于设备的二进制文件。 - 如要下载和构建带标记的非主分支并针对 Nexus 或 Pixel 设备进行构建,请从适用于 Nexus 和 Pixel 设备的二进制文件下载设备专用的二进制文件。
解压专有二进制文件
每组二进制文件都是压缩包中的一个自解压脚本。若要提取这些二进制文件并将其放置在源代码树的正确位置,请执行以下操作:
- 解压缩归档文件。
- 从 AOSP 源代码树的根目录运行附带的自解压 Shell 脚本。
- 同意随附的许可协议的条款。二进制文件及其对应的 makefile 将会安装在源代码树的
vendor/
层次结构中。
(可选)验证代码的合规性
如果您担心源代码的合规性(例如它是否来自 Google),可以验证分支的 Git 标记。若要验证 Git 标记,请执行以下操作:
将以下密钥块复制并粘贴到文本文件中,例如
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-----
运行以下命令,将公钥输入到您的 GnuPG 密钥数据库中。该密钥用于签署代表各版本的带注释标记。
$ gpg --import keyfile.asc
导入密钥后,您可以通过运行以下命令来验证任何标记:
$ git tag -v TAG_NAME