前幾天,,又切換回ubuntu11.04系統(tǒng)了,體驗(yàn)以下unity桌面,。 android系統(tǒng)源碼(包括sdk源碼)的下載主要是需要用到git工具,,關(guān)于git工具的使用我會(huì)抽空專門介紹,,這里用到的時(shí)候簡(jiǎn)略說明一下,。 1.安裝git和curl 命令:
$sudo apt-get install git-core curl
說明: curl是一個(gè)向服務(wù)器或從服務(wù)器傳輸數(shù)據(jù)的工具,它支持HTTP ,、HTTPS,、FTP 、 FTPS ,、 SCP,、SFTP、TFTP,、DICT,、TELNET、LDAP或FILE等協(xié)議,。對(duì)于web開發(fā)人員來說,,它對(duì)
HTTP POST的支持為我們提供了很大的幫助,。
git是分布式的版本控制系統(tǒng),在這里負(fù)責(zé)把遠(yuǎn)程版本庫(kù)的源代碼clone下來,。
2. 安裝repo 命令:
1 2 3 4 5 6 7 | $mkdir bin
$curl http:
$chmod a+x ~/bin/repo
$export PATH=~/bin:$PATH
|
說明: repo是一個(gè)基于git的版本庫(kù)管理工具,,可以簡(jiǎn)化android開發(fā)中使git的使用,。在這里,使用repo和官方提供的android project列表自動(dòng)批量下載android整個(gè)項(xiàng)目,,免去了大量下載各個(gè)項(xiàng)目的手動(dòng)工作量,。
3.初始化repo客戶端 命令:
1 2 3 4 5 6 | $mkdir android/android-source -p
$cd android/android-source
$repo init -u git:
|
初始化完成后會(huì)顯示repo initialized in /home/http://www.cnblogs.com/xx,如下圖:
4.同步版本庫(kù) 命令:
說白了,,就是從服務(wù)器上下載最新的代碼,。 接下來就是漫長(zhǎng)的等待,本人10M帶寬,,依然下載了幾個(gè)小時(shí),。忘記截圖了,就不貼了,。
5.下載單個(gè)項(xiàng)目的源碼 前面我們把a(bǔ)ndroid整個(gè)項(xiàng)目都下載下來了 ,,包括虛擬機(jī),SDK,,NDK等,,但是對(duì)于相當(dāng)多的應(yīng)用開發(fā)者來說,只需要下載android sdk源代碼就足夠了,,沒必要下載3個(gè)多G的全部源碼,。 所以,我們以SDK源碼為例子,,演示如何使用git下載單個(gè)項(xiàng)目工程(下載單個(gè)項(xiàng)目不需要repo工具),。 打開網(wǎng)頁(yè)
http://android.git./,包含大量的android相關(guān)的工程,。 android SDK的代碼包括在android核心框架中,。工程路徑為 platform/frameworks/base.git。 命令:
1 2 3 4 | $cd android
$git clone git:
|
等待一會(huì)兒,,大概200M,,下載完成后,如下圖,。 類似的,,你可以下載任何其他的單個(gè)項(xiàng)目到本地。
6.獲取各個(gè)版本SDK源碼 關(guān)于獲取各個(gè)版本的SDK源碼,,網(wǎng)上還是身邊經(jīng)常有人急需阿,,跪求阿什么的,,今天我在這里拋磚引玉,演示一下方法,,但是不提供下載,,畢竟文件還是有一定的大小的。 首先我們現(xiàn)獲取SDK的各版本的標(biāo)志,,有兩種方式:1.通過分支branch;2.通過標(biāo)簽tag,。 我們先看看結(jié)果:
1 2 3 4 5 6 | $cd android-sdk-source
$git branch -a
$git tag
|
分別如下面二圖:
圖A git branch -a 圖B git tag
從上面兩張圖中我們可以看到各個(gè)分支號(hào)和標(biāo)簽號(hào),這是我們切換分支和檢出標(biāo)簽的基礎(chǔ),。關(guān)于兩者的區(qū)別,,
如果你只是下載的話,大家暫時(shí)不需要知道,,branch是可以提交修改的,,tag則只是作一個(gè)重要的標(biāo)記,但是不能再修改標(biāo)簽對(duì)應(yīng)的代碼了,。 大家都知道android在2.3中開始添加了NFC,所以源代碼中也會(huì)增加NFC目錄,,我們以此為基礎(chǔ),切換到2.3之前和之后的分支,,比較一下,。 我們使用git checkout (branch)命令來檢出分支,我們分別檢出2.2和2.3版本的分支(同一目錄下切換): 得到的結(jié)果分別是:
圖A froyo版本(android2.2)
圖B gingerbread版本(2.3版本,,姜餅)
對(duì)比圖A和圖B,,我們發(fā)現(xiàn)圖B多了一個(gè)nfc目錄,說明我們切換到了2.3版本,。 檢出標(biāo)簽也是一模一樣的,,比如git check android-sdk-2.1_r1 通過切換不同的分支,我們可以獲取所有不同版本的SDK源代碼,,切換的速度還是很快的,。
7.鏈接android.jar源碼 一般我們都喜歡下載各個(gè)版本的sdk源碼,分別存放在各個(gè)版本的sources目錄下,,以便eclipse方法中android.jar對(duì)應(yīng)鏈接,。這種方法我就不多介紹。 今天,,我介紹另外一種方法讓我們只需要一個(gè)簡(jiǎn)單的命令就能方便的切換源代碼,,呵呵,你是不是想到了,,沒錯(cuò),,就是使用前面的checkout命令切換,。 在工程的android.jar右鍵attach source,選擇前面的android-sdk-source文件夾,,
鏈接完來后,,就可查看SDK源代碼了,如果版本不一致,,我們只需要在android-sdk-source目錄下執(zhí)行g(shù)it checkout branchname切換到相應(yīng)的版本就OK了,,再也不用找各個(gè)版本的源代碼了。 當(dāng)然,,兩種方法各有長(zhǎng)短,,覺得哪種方便就用哪種好了,本人是linux環(huán)境,,所以我選擇后一種會(huì)更好,。
8.小結(jié) 源碼下下來就是一筆財(cái)富,堅(jiān)持查看源代碼,,分析其中的底層實(shí)現(xiàn)和框架模式,,都絕對(duì)是極佳的學(xué)習(xí)經(jīng)歷,一定大有益處,。 后面有機(jī)會(huì)我可能會(huì)為大家分析下android源碼的架構(gòu)層次,編譯自己的android系統(tǒng),,如何深度定制android等等,,這個(gè)看時(shí)間安排和具體情況。 不過有一個(gè)是可以肯定的,,我在后面會(huì)單獨(dú)開一個(gè)專題來剖析android源碼:1.用源碼來解說常見的東西,;2.設(shè)計(jì)模式,敬請(qǐng)期待,!
|