標籤:android 原始碼 ubuntu 安卓
博文《Android源碼下載——用git clone實現單個目錄下載》介紹了採用git clone方法下載Android單個目錄源碼的方法,這篇文章已經有四年的曆史,這期間Google對原始碼的管理網站已經進行了更改,直接採用原來的方法下載原始碼已經失效。本文介紹了在ubuntu下(在Windows下安裝Cygwin,通過Cygwin也可在Windows裡通過本文的下載步驟下載Android源碼)擷取目前最新的Android 4.4 全套源碼以及單個自模組源碼的下載方法,可根據本文方法下載全套或者只下載子模組Android源碼進行源碼分析和編譯。下載過錯中遇到很多問題,這些問題的解決對大家擷取源密碼很有借鑒意義。
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
2、建立並進入源碼下載目錄
$ mkdir WORKING_DIRECTORY$ cd WORKING_DIRECTORY
3、初始化源碼Repo
如是下載當前最新的代碼,則:
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 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" /> ...
My Phone專賣店,歡迎各位看官捧場:http://vpclub.octech.com.cn/ztewd/9495.html
本文為原創文章,轉載請註明出處:http://blog.csdn.net/droidpioneer
Android 4.4 全套源碼及子模組源碼的下載方法