博文《
Android源碼下載——用git clone實(shí)現(xiàn)單個(gè)目錄下載》介紹了采用git clone方法下載Android單個(gè)目錄源碼的方法,這篇文章已經(jīng)有四年的歷史,,這期間Google對(duì)源代碼的管理網(wǎng)站已經(jīng)進(jìn)行了更改,,直接采用原來(lái)的方法下載源代碼已經(jīng)失效。本文介紹了在ubuntu下(在Windows下安裝Cygwin,,通過(guò)Cygwin也可在Windows里通過(guò)本文的下載步驟下載Android源碼)獲取目前最新的Android
4.4 全套源碼以及單個(gè)自模塊源碼的下載方法,,可根據(jù)本文方法下載全套或者只下載子模塊Android源碼進(jìn)行源碼分析和編譯。下載過(guò)錯(cuò)中遇到很多問(wèn)題,,這些問(wèn)題的解決對(duì)大家獲取源密碼很有借鑒意義,。
Google源碼的官方幫助頁(yè)面
:http://source./source/initializing.html,下載源碼按照此頁(yè)面介紹的步驟操作即可,。
下面簡(jiǎn)要介紹下下載的步驟和遇到問(wèn)題的解決辦法,。
1、安裝 Repo
a) 建立Repo的安裝目錄,、配置環(huán)境變量
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
問(wèn)題:上面是Google制定的repo獲取地址,,但獲取可能失敗,。
解決辦法:網(wǎng)上有網(wǎng)友給出了替代的獲取地址,如遇報(bào)錯(cuò)可用下面的地址替代:
curl "http://php./en/wp-content/uploads/2011/09/repo" > ~/bin/repo
2,、建立并進(jìn)入源碼下載目錄
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
3,、初始化源碼Repo下載地址
如是下載當(dāng)前最新的代碼,則:
repo init -u https://android./platform/manifest
如是下載特定Android成熟版本分支的代碼,,則加上-b 參數(shù),,如當(dāng)前最新發(fā)布的android 4.4分支代碼:
repo init -u https://android./platform/manifest -b
android-4.4.1_r1
命令如順利執(zhí)行,期間將要求輸入unsername和email,,直接輸入自己的自定義的用戶名和email即可,。
問(wèn)題:在init過(guò)錯(cuò)中,可能會(huì)出現(xiàn)如下的443連接失敗錯(cuò)誤:
error: Failed connect to android.:443
解決辦法:找到/etc/hosts文件,,增加如下地址(如無(wú)法保存需要用root權(quán)限修改hosts文件的訪問(wèn)權(quán)限):
74.125.128.82 android.
74.125.31.82 www.
203.208.46.172 cache.pack.google.com
173.194.74.82 gerrit.
上面的地址可能會(huì)發(fā)生變化,,保存前在終端用ping命令逐個(gè)ping各個(gè)域名的當(dāng)前IP地址替換:
e.g.: ping android.
4、同步全套源代碼
$ repo sync
問(wèn)題:命令執(zhí)行過(guò)程中可能會(huì)報(bào)錯(cuò): 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命令在執(zhí)行過(guò)程中一般不會(huì)一次性成功,中途可能超時(shí)或存在其他失敗,,此時(shí)只需再次執(zhí)行repo sync即可,,以前的記錄會(huì)被緩存的。
5,、同步子模塊代碼
repo syn命令是同步所制定分支的全套代碼,,但全套代碼的執(zhí)行過(guò)程很長(zhǎng),有時(shí)候也并不需要全套代碼而只需要特定子模塊的代碼,。
獲取子模塊的方法是在repo sync 命令后加上子模塊的git節(jié)點(diǎn)目錄名即可,,例如想要獲取Launcher3模塊的源代碼:
repo sync packages/apps/Launcher3
各個(gè)子模塊的節(jié)點(diǎn)目錄查找方法:
在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" />
...
我的手機(jī)專賣店,,歡迎各位看官捧場(chǎng):http://vpclub./ztewd/9495.html
本文為原創(chuàng)文章,,轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/droidpioneer