由于使用 HTTPS 协议更安全,并且更便于我们灵活处理,所以强烈推荐使用 HTTPS 协议同步 AOSP 镜像。
由于 AOSP 镜像造成CPU/内存负载过重,我们限制了并发数量,因此建议: 1. sync的时候并发数不宜太高,否则会出现 503 错误,即-j
后面的数字不能太大,建议选择4。 2. 请尽量选择流量较小时错峰同步。
- 2016-06-24 : 关闭 git:// 协议,仅支持 HTTPS
- 2016-04-03 : 删除每月初始化包中的冗余内容,使用方法更新
- 2015-12-21 : 增加每月初始化包,少量修正文档错误
- 2015-10-13 : 修复上游替换文档错误
- 2015-10-13 : 修复次级镜像文档错误
- 2015-10-09 : 恢复 git://aosp.tuna.tsinghua.edu.cn/aosp/ 访问
- 2015-10-08 : 镜像地址更新为 https://aosp.tuna.tsinghua.edu.cn/ (结尾没有/android)
过程摘录
下载 repo 工具:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
使用每月更新的初始化包
由于首次同步需要下载 24GB 数据,过程中任何网络故障都可能造成同步失败,我们强烈建议您使用初始化包进行初始化。
.repo
目录中 checkout 出来的,所以我们只保留了 .repo
目录,下载后解压 再 repo sync
使用方法如下:
wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码
repo sync
即可保持同步。 我们强烈建议您保持每天同步,并尽量选择凌晨等低峰时间
传统初始化方法
建立工作目录:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
初始化仓库:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
如果提示无法连接到 gerrit.googlesource.com,请参照git-repo的帮助页面的更新一节。
如果需要某个特定的 Android 版本(列表):
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.0.1_r1
同步源码树(以后只需执行这条命令来同步):
repo sync
建立次级镜像
由于 AOSP 镜像需求量巨大,且 Git 服务占资源较多,TUNA 服务器因 AOSP 产生的负载已经占主要部分。 如果你是团队用户,我们强烈建议你通过 TUNA 建立次级镜像,再分享给团队内其他用户,减轻 TUNA 服务器压力。 建立 AOSP 镜像需要占用约 80G 磁盘。
具体步骤为:
repo
初始化:
repo init -u https://aosp.tuna.tsinghua.edu.cn/mirror/manifest --mirror
最后同步源码树:
repo sync
git daemon --verbose --export-all --base-path=WORKING_DIR WORKING_DIR
(WORKING_DIR
为代码树所在目录) 。git://ip.to.mirror/
替换已有的 AOSP 源代码的 remote
.repo/manifest.xml
把其中的 aosp 这个 remote 的 fetch 从 https://android.googlesource.com
改为 https://aosp.tuna.tsinghua.edu.cn/
。
<manifest>
<remote name="aosp"
- fetch="https://android.googlesource.com"
+ fetch="https://aosp.tuna.tsinghua.edu.cn"
review="android-review.googlesource.com" />
<remote name="github"
.repo/manifests.git/config
,将
url = https://android.googlesource.com/platform/manifest
更改为
url = https://aosp.tuna.tsinghua.edu.cn/platform/manifest
这个方法也可以用来在同步 Cyanogenmod 代码的时候从 TUNA 同步部分代码
FAQ
- 镜像的是什么?
- AOSP 的 git 仓库
- 为何不能通过浏览器访问?
- 暂时没有 gitweb, 而且反正是 git bare 仓库,没有可以直接看到的内容。
- 出现
curl: (22) The requested URL returned error: 404 Not Found Server does not provide clone.bundle; ignoring.
- 怎么办?
- 无视即可。