在涉及到AOSP的项目代码同步时,大家经常会用到repo工具(关于repo可以看我之前写的一篇文章)。由于众所周知的原因,我们在访问谷歌服务时会受到各种限制。执行repo init命令时,设计者出于维护和使用体验的考虑,每次都要去服务器端同步最新版本的repo工具,这时大家经常会遇到报错:
- 1
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
2 fatal: error [Errno 110] Connection timed out
这时大家一般会考虑用科学上网的方式解决。而现在有了更便利的解决方法。清华大学开源软件站维护了一个AOSP项目的镜像源,通过镜像源我们可以非常容易的获取到我们需要的代码。
免翻墙获取repo工具的方式
通过清华大学镜像源clone repo代码
- 1
git clone https://gerrit-google.tuna.tsinghua.edu.cn/git-repo
本地会同步下一个名为git-repo的工程,工程里包含最新的repo工具,执行repo init就可以直接本地的repo,此时不会再向google的服务器同步最新的repo工具
执行repo init
- 1
[git-repo路径]/repo init -u https://android.googlesource.com/platform/manifest
PS:
我还在清华大学镜像网站上看到另外一种方式:mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repoupdate:
上面的方式是将repo添加到环境变量,但是repo运行时,仍然会去google服务器请求最新版本,解决方式是在本地环境变量中指定repo服务器地址
repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容>复制到你的~/.bashrc里
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
并重启终端模拟器。参考:
Android 镜像使用帮助
完美解决repo init 错误 fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
解决:Cannot get http://gerrit.googlesource.com/git-repo/clone.bundle- 1