Android拓展系列(3)–Android源碼下載

來源:互聯網
上載者:User

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

$sudo apt-get install git-core curl

說明:
      curl是一個向伺服器或從伺服器傳輸資料的工具,它支援HTTP 、HTTPS、FTP 、 FTPS 、 SCP、SFTP、TFTP、DICT、TELNET、LDAP或FILE等協議。對於web開發人員來說,它對HTTP POST的支援為我們提供了很大的協助。

     git是分布式的版本控制系統,在這裡負責把遠程版本庫的原始碼clone下來。

2. 安裝repo
命令: 

$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整個項目,免去了大量下載各個項目的手動工作量。

3.初始化repo用戶端
命令:

//建立目錄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.同步版本庫
命令:

$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。
      命令:

//進入之前建立的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。
       我們先看看結果:

//進入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.設計模式,敬請期待!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.