1. 程式人生 > >如何不翻牆下載Android原始碼

如何不翻牆下載Android原始碼

由於眾所周知的原因,在國內是無法訪問谷歌伺服器的,更不用說下載十幾個G的Android版本程式碼了。幸好國內一些一流高校如清華大學和中科大都提供了Android AOSP 程式碼的映象服務,可以不用翻牆就可以下載Android程式碼。下面就以清化大學的源為例描述下如何不翻牆下載Android程式碼。

1、下載Repo

可以使用原先下載好的repo,如果沒有現成的repo或者無法從google下載,可以通過git clone從清華的源上下載。

git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/


命令執行完後,在當前目錄會出現git-repo資料夾,其中就有我們需要的repo,將其拷貝到環境變數PATH定義的路徑中,並給其加上可執行許可權。

mkdir -p ~/bin
export PATH=~/bin:$PATH
cd git-repo
cp repo ~/bin/
chmod a+x ~/bin/repo

2、修改Repo中的REPO_URL

將repo檔案中的

REPO_URL = 'https://gerrit.googlesource.com/git-repo'
修改為:
REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'


3、repo init

執行repo init -u 指令下載manifest

將從google下載的指令:

repo init -u https://android.googlesource.com/platform/manifest
修改為清華的源:
repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest
同原先一樣,如果需要按branch下載,加上-b brance_name即可,如:
repo init-u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r9


4、同步

repo sync,清華大學的源上是有併發限制的,每個IP限制併發數為4,最大-j4,為了在下載出錯的時候能夠重新同步,可以通過以下指令碼執行同步命令:

#! /bin/sh
export PATH=~/bin:$PATH
repo sync -j2
if [ "$?" != "0" ]; then
	echo "-----------------------\n"
	echo "repo failed, do again...\n"
	sleep 30
	repo sync -j2
fi



這樣就可以無需翻牆下載Android AOSP原始碼了,而且速度還挺快。



附1:對於已從Google下載的原始碼,可以通過修改程式碼目錄中的 .repo/manifest.xml 檔案,改從清華的源同步。(-表示刪除,+表示增加)

<manifest>  
  
   <remote  name="aosp"  
-           fetch="https://android.googlesource.com"  
+           fetch="git://aosp.tuna.tsinghua.edu.cn/android/"  
            review="android-review.googlesource.com" />  
  
   <remote  name="github"  


附2:下載Cyanogenmode的程式碼

CM程式碼由兩部分組成:CM自身程式碼和Android AOSP程式碼。CM自身程式碼無需翻牆即可同步,而AOSP程式碼需要翻牆下載。這部分程式碼同樣可以從清華的源上下載下來。修改 ./repo/manifest.xml

<?xml version="1.0" encoding="UTF-8"?>  
 <manifest>  
  
   <remote  name="aosp"  
-           fetch="https://android.googlesource.com"  
+           fetch="https://android.googlesource.com"  
            review="android-review.googlesource.com"  
            revision="refs/tags/android-5.1.1_r6" />  
  
   <remote  name="github"  
            fetch=".."  
            review="review.cyanogenmod.org" />  
  
   <remote  name="private"  
            fetch="ssh://[email protected]" />  

附3:網址

清華大學:http://mirrors.tuna.tsinghua.edu.cn

中科大:http://mirrors.ustc.edu.cn

另外還有騰訊提供的映象:http://android-mirror.bugly.qq.com:8080