Google源碼的官方幫助頁面:http://source.android.com/source/initializing.html,下載源碼按照此頁面介紹的步驟操作即可。
下面簡要介紹下下載的步驟和遇到問題的解決辦法。
1、安裝 Repo
a) 建立Repo的安裝目錄、配置環境變量
$ mkdir ~/bin
$ PATH=~/bin:$PATH
b) 獲取Repo工具
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
問題:上面是Google制定的repo獲取地址,但獲取可能失敗。
解決辦法:網上有網友給出了替代的獲取地址,如遇報錯可用下面的地址替代:
curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ~/bin/repo
這個網站目前可以下載到,但是如果以後出現下載不了的話,可以到網站上下載別人共享的repo腳本,存到~/bin/目錄下面即可
2、建立並進入源碼下載目錄
3、初始化源碼Repo下載地址$ mkdir WORKING_DIRECTORY $ cd WORKING_DIRECTORY
如是下載當前最新的代碼,則:
repo init -u https://android.googlesource.com/platform/manifest
如是下載特定Android成熟版本分支的代碼,則加上-b 參數,如當前最新發布的android 4.4分支代碼:
repo init -u https://android.googlesource.com/platform/manifest -b
android-4.4.1_r1 命令如順利執行,期間將要求輸入unsername和email,直接輸入自己的自定義的用戶名和email即可。 問題:在init過錯中,可能會出現如下的443連接失敗錯誤: error: Failed connect to android.googlesource.com:443 解決辦法:找到/etc/hosts文件,增加如下地址(如無法保存需要用root權限修改hosts文件的訪問權限): 74.125.128.82 android.googlesource.com 74.125.31.82 www.googlesource.com 203.208.46.172 cache.pack.google.com 173.194.74.82 gerrit.googlesource.com 上面的地址可能會發生變化,保存前在終端用ping命令逐個ping各個域名的當前IP地址替換:
e.g.: ping android.googlesource.com
ping 74.125.128.82這個地址ping不通,所以後來我把它替換成跟下面的 74.125.31.82的地址就可以了,改完後的配置
74.125.31.82 android.googlesource.com 74.125.31.82 www.googlesource.com 203.208.46.172 cache.pack.google.com 173.194.74.82 gerrit.googlesource.com
4、同步全套源代碼
$ repo sync
問題:命令執行過程中可能會報錯:
fatal: '../platform/abi/cpp.git' does not appear to be a git repository fatal: The remote end hung up unexpectedly error: Cannot fetch platform/abi/cpp解決辦法: 在init成功後下載的.repo目錄下的manifest.xml裏,找到fetch屬性,並修改爲:
fetch= "git://Android.git.linaro.org/"
repo sync命令在執行過程中一般不會一次性成功,中途可能超時或存在其他失敗,此時只需再次執行repo sync即可,以前的記錄會被緩存的。
5、同步子模塊代碼
repo syn命令是同步所制定分支的全套代碼,但全套代碼的執行過程很長,有時候也並不需要全套代碼而只需要特定子模塊的代碼。 獲取子模塊的方法是在repo sync 命令後加上子模塊的git節點目錄名即可,例如想要獲取Launcher3模塊的源代碼:
repo sync packages/apps/Launcher3 各個子模塊的節點目錄查找方法:
在init成功後下載的.repo目錄下的manifest.xml裏,找到子模塊的project 屬性即可: e.g. Launcher 3 的git目錄: ... <project path="packages/apps/Launcher2" name="platform/packages/apps/Launcher2" /> <project path="packages/apps/Launcher3" name="platform/packages/apps/Launcher3" /> <project path="packages/apps/LegacyCamera" name="platform/packages/apps/LegacyCamera" /> ...
我的手機專賣店,歡迎各位看官捧場:http://vpclub.octech.com.cn/ztewd/9495.html