使用清华或中科大AOSP源镜像下载Android源码

KaelLi 2017年12月27日14:58:39
评论
11,9704

对于每一个开发人员,尤其是Android开发人员这种每天都要跟Google旗下各种资源网站打交道的人来说,各种不通畅的网络是最大的心伤。但是大环境我们改变不了,除非你移民否则只能接受。本来做开发就很心累了,但连网络都这么憋屈也实在是让人无可奈何。唯一可以欣慰的是,很多国内的大公司和大学都在为我们提供方便。

Linux方面有阿里、网易、搜狐等各种源,而Android现在也有不少的镜像了。在Ubuntu16.04上配置Android编译环境并下载8.0源码进行编译一文里,我们是从Android的Google官方源更新的源码,实际操作过的朋友一定会感觉痛不欲生,因为某种原因,这速度实在是太慢了。如果你网络状况良好,那么按照那篇文章的引导完成源码下载不难,但如果你用的是普通网络,那么还是换国内的镜像比较好。我今天给大家带来的是清华和中科大的资源:

清华大学AOSP镜像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

中科大AOSP镜像:https://lug.ustc.edu.cn/wiki/mirrors/help/aosp

这里我们以清华的AOSP为例。

之前在下载Repo的时候就遇到了坑爹事儿,那就是Repo的下载链接也是googlesource.com网站的,所以很多人根本连Repo都不能下载成功!好吧,清华镜像站考虑的十分周到,连Repo也提供了镜像:

把“curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo”中的链接改掉,改成:“curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo”

然后赋予Repo执行权限:

chmod a+x ~/bin/repo

如果你经常使用Repo工具来更新源码,那么有时候它会自己尝试进行自身版本的更新,默认地址自然还是googlesource.com了,所以有必要改动一下,在你的~/.bashrc里加一行:

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

这样以后Repo的自动更新也会从清华的镜像站这里获取了。

接下来是Repo初始化了,与Google源不同的是,清华源给我们提供了2种选择。

  • 直接下载打包好的源码文件包

由于Android源码通过Repo下载体积巨大,会超过30GB,而且我们知道,下载1000万个10KB的小文件所消耗的时间,是下载同样体积但被打成一个文件包的时间的很多倍。所以我们可以选择,直接下载清华提供的Android源码初始化包:

wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar # 解压得到的 AOSP 工程目录
cd AOSP   # 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
或repo sync -l 仅checkout代码

此后,每次只需运行 repo sync 即可保持同步。 清华官网表示你可以每天都进行同步,而且推荐选择在凌晨这种低峰时间减轻服务器压力。

  • 正常的通过Repo获取全部源码

如果我们依然延续正常的,通过Repo来直接获取源码,那么操作跟之前保持一致,接下来是很重要的一步修改,就是把Repo初始化的源码地址,从https://source.android.com改为清华的镜像站地址(这里我还是选择同步主分支的代码):

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

然后,再执行

repo sync

你就会发现,原来下载Android源码可以这么爽快!(我是从20:46开始下载的,然后22点10分的时候就同步完毕,用时大概一个半小时,通过du命令可得知源码目录一共由60多G,实际的下载量大概是30多G,60G是最终所有源码解压之后的大小)

KaelLi
  • 本文由 发表于 2017年12月27日14:58:39
  • 转载请务必保留本文链接:https://www.kaelli.com/19.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: