$sudo apt-get install git-core curl
說(shuō)明:
curl是一個(gè)向服務(wù)器或從服務(wù)器傳輸數(shù)據(jù)的工具,它支持HTTP 、HTTPS、FTP 、 FTPS 、 SCP、SFTP、TFTP、DICT、TELNET、LDAP或FILE等協(xié)議。對(duì)于web開(kāi)發(fā)人員來(lái)說(shuō),它對(duì) HTTP POST的支持為我們提供了很大的幫助。
git是分布式的版本控制系統(tǒng),在這里負(fù)責(zé)把遠(yuǎn)程版本庫(kù)的源代碼clone下來(lái)。
2. 安裝repo
命令:(是一個(gè)便于git管理的工具)
$mkdir bin
//下載repo腳本到本地bin文件夾下
$curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo
//設(shè)置本地repo的可執(zhí)行權(quán)限
$chmod a+x ~/bin/repo
//臨時(shí)把repo添加到環(huán)境變量中,方便后面執(zhí)行。
$export PATH=~/bin:$PATH
說(shuō)明:
repo是一個(gè)基于git的版本庫(kù)管理工具,可以簡(jiǎn)化android開(kāi)發(fā)中使git的使用。在這里,使用repo和官方提供的android project列表自動(dòng)批量下載android整個(gè)項(xiàng)目,免去了大量下載各個(gè)項(xiàng)目的手動(dòng)工作量。
3.初始化repo客戶端(版本庫(kù))
如果是想把Android當(dāng)前主線上最新版本的所有的sourcecode拿下來(lái),我們需要repo的幫助。
先建立一個(gè)目錄,進(jìn)去以后用repo init命令即可,然后就可以用repo sync 抓去 android source code 。
命令:
//創(chuàng)建目錄android/android-source來(lái)存放下載的源碼 $mkdir android/android-source -p
//進(jìn)入目錄 $cd android/android-source
//獲取項(xiàng)目列表并且初始化目錄 $repo init -u https://android.googlesource.com/platform/manifest
解釋:repo init -u URL 用以 在當(dāng)前目錄下 安裝 repository ,會(huì)在當(dāng)前目錄創(chuàng)建一個(gè)目錄 '.repo' -u 參數(shù)指定一個(gè)URL, 從這個(gè)URL 中取得repository 的 manifest (清單)文件。
獲取的manifest文件放在.repo目錄中。命名為manifest.xml。這個(gè)文件的內(nèi)容其實(shí)就是所有被git管理的倉(cāng)庫(kù)的列表!可以用 -m 參數(shù)來(lái)選擇獲取 repository 中的某一個(gè)特定的 manifest 文件,如果不具體指定,那么表示為 將要獲取 默認(rèn)的 mainfest 文件 (default.xml)。
(有諸多供我們選擇的manifest文件,所有的manifest文件都放在目錄.repo/manifests中,該目錄本身亦被git所管理)
可以用 -b 參數(shù) 來(lái) 指定 某個(gè)manifest 的分支。注意 .repo/manifests是個(gè)被git管理的倉(cāng)庫(kù),這里放的是所有的manifest文件(*.xml),因?yàn)?strong>被git管
理,固然有分支,-b可以切換到你想要的分支然后再下載相關(guān)的xml文件,當(dāng)然具體下載那個(gè)xml還要看-m參數(shù)了,所以如果你僅僅指定-b而沒(méi)有-m的話,就是下
載-b指定分支下的default.xml文件,如果不指定-b參數(shù),那么會(huì)默認(rèn)使用master分支
按照提示輸入 用戶名 和 郵箱
初始化完成后會(huì)顯示repo initialized in /home/http://www.cnblogs.com/xx,如下圖:
這樣就說(shuō)明本地的版本庫(kù)已經(jīng)初始化完畢,并且包含了當(dāng)前最新的sourcecode。
注意:如果想拿 某個(gè)branch而不是主線上的代碼,我們需要用 -b 參數(shù)制定branch名字,如:
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo-amlogic-mid
4.同步版本庫(kù)命令:
$repo sync
這樣 我們把整個(gè)android代碼樹(shù)做到同步到本地,
解釋:如果是第一次運(yùn)行 repo sync , 則這個(gè)命令相當(dāng)于 git clone ,會(huì)把 repository 中的所有內(nèi)容都拷貝到本地。 如果不是第一次運(yùn)行 repo sync , 則相當(dāng)于 git remote update ; git rebase origin/branch .
repo sync 會(huì)更新 .repo 下面的文件。 如果在merge 的過(guò)程中出現(xiàn)沖突, 這需要手動(dòng)運(yùn)行 git rebase --continue
說(shuō)白了,就是從服務(wù)器上下載最新的代碼。接下來(lái)就是漫長(zhǎng)的等待,本人10M帶寬,依然下載了幾個(gè)小時(shí)。
同樣,我們可以用類似
repo sync project1 project2 …
這樣的命令來(lái)同步某幾個(gè)項(xiàng)目,如果是同步Android中的單個(gè)項(xiàng)目,只要在項(xiàng)目目錄下執(zhí)行簡(jiǎn)單的git pull即可。
repo manifest -r -o xxx.xml #獲取 當(dāng)前的源代碼的manifest,并保存為 xxx.xml
==============
5.小結(jié)
源碼下來(lái)就是一筆財(cái)富,堅(jiān)持查看源代碼,分析其中的底層實(shí)現(xiàn)和框架模式,都絕對(duì)是極佳的學(xué)習(xí)經(jīng)歷,一定大有益處。
聯(lián)系客服