Android拓展系列(1)--Android源碼下載

前幾天,又切換回ubuntu11.04系統了,體驗如下unity桌面。
 android系統源碼(包括sdk源碼)的下載主要是須要用到git工具,關於git工具的使用我會抽空專門介紹,這裏用到的時候簡略說明一下。
1.安裝git和curl
命令: linux

1
$sudo apt-get install git-core curl

說明:
      curl是一個向服務器或從服務器傳輸數據的工具,它支持HTTP 、HTTPS、FTP 、 FTPS 、 SCP、SFTP、TFTP、DICT、TELNET、LDAP或FILE等協議。對於web開發人員來講,它對 HTTP POST的支持爲咱們提供了很大的幫助。 android

     git是分佈式的版本控制系統,在這裏負責把遠程版本庫的源代碼clone下來。 git

2. 安裝repo
命令:  web

1
2
3
4
5
6
7
$mkdir bin
//下載repo腳本到本地bin文件夾下
$curl http://android.git.kernel.org/repo >~/bin/repo
//設置本地repo的可執行權限
$chmod a+x ~/bin/repo
//臨時把repo添加到環境變量中,方便後面執行。
$export PATH=~/bin:$PATH

 說明:
      repo是一個基於git的版本庫管理工具,能夠簡化android開發中使git的使用。在這裏,使用repo和官方提供的android project列表自動批量下載android整個項目,免去了大量下載各個項目的手動工做量。 ubuntu

3.初始化repo客戶端
命令: 設計模式

1
2
3
4
5
6
//建立目錄android/android-source來存放下載的源碼
$mkdir android/android-source -p
//進入目錄
$cd android/android-source
//獲取項目列表而且初始化目錄
$repo init -u git://android.git.kernel.org/platform/manifest.git

      初始化完成後會顯示repo initialized in /home/http://www.cnblogs.com/xx,以下圖:
  服務器

4.同步版本庫
命令: 架構

1
$repo sync

      說白了,就是從服務器上下載最新的代碼。
      接下來就是漫長的等待,本人10M帶寬,依然下載了幾個小時。忘記截圖了,就不貼了。  框架

5.下載單個項目的源碼
      前面咱們把android整個項目都下載下來了 ,包括虛擬機,SDK,NDK等,可是對於至關多的應用開發者來講,只須要下載android sdk源代碼就足夠了,不必下載3個多G的所有源碼。
      因此,咱們以SDK源碼爲例子,演示如何使用git下載單個項目工程(下載單個項目不須要repo工具)。
      打開網頁 http://android.git.kernel.org/,包含大量的android相關的工程。
      android SDK的代碼包括在android核心框架中。工程路徑爲 platform/frameworks/base.git。
      命令: eclipse

1
2
3
4
//進入以前創建的android目錄
$cd android
//克隆服務器端的base的版本庫和代碼到android-sdk-source目錄下
$git clone git://android.git.kernel.org/platform/frameworks/base.git android-sdk-source

      等待一下子,大概200M,下載完成後,以下圖。
 
      相似的,你能夠下載任何其餘的單個項目到本地。

6.獲取各個版本SDK源碼
      關於獲取各個版本的SDK源碼,網上仍是身邊常常有人急需阿,跪求阿什麼的,今天我在這裏拋磚引玉,演示一下方法,可是不提供下載,畢竟文件仍是有必定的大小的。
      首先咱們現獲取SDK的各版本的標誌,有兩種方式:1.經過分支branch;2.經過標籤tag。
       咱們先看看結果:

1
2
3
4
5
6
//進入base版本庫目錄
$cd android-sdk-source
//顯示全部的分支,包括遠程和本地分支,咱們沒有創建分支,全部沒有本地分支
$git branch -a
//顯示全部標籤
$git tag

      分別以下面二圖:

 
圖A git branch -a 
 
圖B git tag

        從上面兩張圖中咱們能夠看到各個分支號和標籤號,這是咱們切換分支和檢出標籤的基礎。關於二者的區別, 若是你只是下載的話,你們暫時不須要知道,branch是能夠提交修改的,tag則只是做一個重要的標記,可是不能再修改標籤對應的代碼了。
       你們都知道android在2.3中開始添加了NFC,因此源代碼中也會增長NFC目錄,咱們以此爲基礎,切換到2.3以前和以後的分支,比較一下。
       咱們使用git checkout (branch)命令來檢出分支,咱們分別檢出2.2和2.3版本的分支(同一目錄下切換):
 
      獲得的結果分別是:

圖A froyo版本(android2.2)

圖B gingerbread版本(2.3版本,薑餅)

      對比圖A和圖B,咱們發現圖B多了一個nfc目錄,說明咱們切換到了2.3版本。 
      檢出標籤也是如出一轍的,好比git check android-sdk-2.1_r1 
      經過切換不一樣的分支,咱們能夠獲取全部不一樣版本的SDK源代碼,切換的速度仍是很快的。

7.連接android.jar源碼
      通常咱們都喜歡下載各個版本的sdk源碼,分別存放在各個版本的sources目錄下,以便eclipse方法中android.jar對應連接。這種方法我就很少介紹。
      今天,我介紹另一種方法讓咱們只須要一個簡單的命令就能方便的切換源代碼,呵呵,你是否是想到了,沒錯,就是使用前面的checkout命令切換。
      在工程的android.jar右鍵attach source,選擇前面的android-sdk-source文件夾,

      連接完來後,就可查看SDK源代碼了,若是版本不一致,咱們只須要在android-sdk-source目錄下執行git checkout branchname切換到相應的版本就OK了,不再用找各個版本的源代碼了。
     固然,兩種方法各有長短,以爲哪一種方便就用哪一種好了,本人是linux環境,因此我選擇後一種會更好。

8.小結       源碼下下來就是一筆財富,堅持查看源代碼,分析其中的底層實現和框架模式,都絕對是極佳的學習經歷,必定大有益處。       後面有機會我可能會爲你們分析下android源碼的架構層次,編譯本身的android系統,如何深度定製android等等,這個看時間安排和具體狀況。       不過有一個是能夠確定的,我在後面會單獨開一個專題來剖析android源碼:1.用源碼來解說常見的東西;2.設計模式,敬請期待!

相關文章
相關標籤/搜索