4、下载AOSP源码:配置Git用户名与邮箱、使用Repo初始化AOSP主线分支、同步源码(约100GB+)

好,到了真正动手的环节了。说实话,下载AOSP源码是很多人入门时第一个劝退点——100多GB的数据,网络不稳定,一跑就是大半天。我当年第一次同步时,半夜爬起来看了三次进度条,结果第二天发现某个仓库校验失败,又得重来。嗯,这节课咱们就把这些坑提前填上。

4.1 配置Git用户名与邮箱

Repo工具本质上是对Git的封装,所以Git的全局配置必须先搞定。说白了,你提交的任何代码都会带上这个身份信息,虽然咱们只是下载源码不提交,但Repo初始化时会校验这个配置。

核心命令:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

我个人习惯用公司邮箱,因为后续如果涉及AOSP代码审核,Google账号绑定的邮箱必须和这个一致。如果你只是下载看看,用任意邮箱都行。

小技巧: 检查配置是否生效,可以运行 git config --global --list,会列出所有全局配置项。

4.2 使用Repo初始化AOSP主线分支

Repo是Google专门为管理多Git仓库设计的工具。AOSP有几百个Git仓库,手动一个个clone?不现实。Repo用一个manifest文件告诉你「需要下载哪些仓库、各自在哪个分支、从哪下载」。

4.2.1 创建源码存放目录

先找个磁盘空间足够的位置。我建议至少预留150GB,因为同步完源码后,编译时还会生成大量中间文件。

mkdir ~/aosp
cd ~/aosp

为什么放在家目录?因为后续编译时,如果路径包含中文或空格,可能会出一些奇怪的问题。我曾经吃过这个亏,项目名里带了个空格,编译到一半报错,排查了半天才发现是路径问题。

4.2.2 初始化Repo

执行以下命令,拉取主线分支(master)的manifest文件:

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

这里解释一下参数:

  • -u:指定manifest仓库的URL
  • -b:指定分支,master就是AOSP主线

如果你想要某个特定Android版本,比如Android 14,可以把 -b 换成 android-14.0.0_r1。主线分支更新最快,但稳定性稍差。我个人建议初学者先跟主线,因为遇到问题时社区讨论最多,容易找到解决方案。

注意: 如果网络访问Google的服务器很慢,可以使用国内镜像源。比如中科大的镜像:

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b master

清华的镜像也可以:https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

初始化成功后,你会看到 repo has been initialized 的提示。此时 ~/aosp 目录下会多一个 .repo 文件夹,manifest文件就藏在里面。

4.3 同步源码(约100GB+)

初始化只是下载了一个「购物清单」,真正把东西搬回家要靠 repo sync

4.3.1 开始同步

repo sync -j4

-j4 表示用4个线程并行下载。这个数字怎么设?我一般看CPU核心数,比如8核CPU就设 -j8。但要注意,线程数太高可能会被服务器限流,甚至断开连接。我遇到过设 -j16 结果频繁断连的情况,后来老老实实改回 -j4 反而更稳定。

4.3.2 同步过程中的常见问题

问题 原因 解决方法
网络超时 GFW干扰或服务器负载高 换国内镜像源,或加代理
仓库校验失败 下载的文件不完整 重新执行 repo sync,它会自动续传
磁盘空间不足 预留空间不够 清理无用文件,或换大容量磁盘

避坑指南: 我曾经在同步到90%时断网,重新执行 repo sync 后它从断点续传,但有个仓库的校验一直失败。最后发现是那个仓库的.git目录损坏了,解决办法是删除那个仓库的目录,然后重新同步:

rm -rf 出问题的仓库目录
repo sync 出问题的仓库名称

4.3.3 同步完成后的验证

同步完成后,可以看看总大小:

du -sh ~/aosp

正常情况应该在100GB左右。如果差太多,说明有些仓库没同步完整。你可以用 repo status 检查每个仓库的状态。

小技巧: 如果只想同步部分仓库,可以用 repo sync -c 仓库名。比如只同步 frameworks/base

repo sync -c frameworks/base

这在后续开发中很实用,不用每次都全量同步。

4.4 总结

下载AOSP源码这件事,说白了就是三句话:配好Git身份、用Repo初始化、耐心等同步完成。嗯,耐心是最重要的——我第一次同步花了整整6个小时,中间还断了两次。但当你看到 Sync complete 那行字时,成就感还是有的。

下一节咱们聊聊怎么编译这个庞然大物,以及如何用Android Studio调试系统应用。到时候你会发现,今天下载的这100多GB,只是万里长征第一步。