从今年5月底开始,谷歌被全面封锁,所有谷歌网站都无法访问,包括这一次。官方资源无法访问,所以下载代码当然很难。
本文将为大家解决这个问题——介绍如何从/下载最新的源码。俗话说“授人以鱼不如授人以渔”。这篇文章不仅给出了打包源码的链接,还重现了我的下载方式。希望可以帮助遇到类似问题的大家。帮助了。
/介绍
打开/可以看到:
中间以粗体列出的是每个项目的链接。 / 上托管的源代码使用 git 单独管理每个项目,而不是像这样使用 repo( 开发的基于 git 的命令行工具)来管理所有项目。因此,如果您只想下载一个项目的源码,则可以单独下载(例如您想开发一款App,想了解SDK的部分源码,则可以下载基础项目)。
如何下载项目的代码?
用过git的同学肯定知道,可以使用如下命令获取远程仓库的代码:
git clone [仓库URL]
项目页面右栏给出了仓库URL,如下图(URL下方的文本框):
当然,如果您只是想配置“App源码调试”环境,可以点击“ZIP”按钮下载zip格式的源码包,然后在调试时选择下载的源码包。
如何批量下载源码
这里是本文的重点——批量下载的源码。
根据单独下载项目的流程,下载所有项目的源码有两种方法:
获取所有项目的git仓库URL以及获取所有项目的ZIP包下载链接
接下来的问题是如何获得这样的URL?

当然是来自网页(即页面的HTML文件)!
现在的问题是如何获取这些网页呢?
我立即想到的解决方案是使用 CURL
ps:CURL是一个命令行上传下载工具,支持HTTP、FTP等多种协议。
没有curl的同学可以使用以下命令下载:
sudo apt-get install curl
使用 CURL 来捕获页面,您不必担心获取仓库 URL 或 ZIP 包 URL:
首先我们需要爬取/的页面,然后“顺着线索”爬取各个项目的页面,然后从各个项目的页面中爬取仓库URL或者ZIP包URL。
抓取页面
在/页面下方,可以看到/分为5个页面。点击以下页面,你会发现这些页面的URL格式都是一样的:
https://github.com/android?page=N
其中,N代表“哪一页”,比如第二页,即
由此,您可以轻松编写使用 bash 脚本捕获这五个页面的代码(您可以直接在终端中执行以下命令):
for ((i=1; i<=5; i++)); do curl https://github.com/android?page=$i > android.github.com.$i.html; done
有一个捷径
查看项目的主页URL和仓库URL,我们可以发现:

仓库URL = 首页URL + .git
例如base的主页URL为:
https://github.com/android/platform_frameworks_base
仓库网址为:
https://github.com/android/platform_frameworks_base.git
当然,如果你有账号并且当前环境已经添加进去,你也可以使用ssh协议来下载(代替)。 ssh下载地址为:
git://github.com/android/platform_frameworks_base.git
可见,获取仓库URL更加简单,无需进一步搜索项目主页(下面仅介绍获取所有仓库URL)。
解析页面
现在的问题是——如何从这些页面中获取仓库的URL。
通过浏览器的“ ”菜单可以快速找到页面上某个链接对应的HTML代码块,如下图:
您可以看到基础项目的超链接 () 被标签包围。粗略浏览了一下刚才下载的几个子页面,可以看到各个项目主页的链接是这样的(下一行)。
根据刚刚查到的两条规则: