Android源碼解析01:下載Android源碼


  在Android源碼中包含了很多的東西,如內嵌在Android系統中應用程序(如拍照、計算器、日歷、撥號器等)的源代碼;Android SDK帶的各種工具(如adb、emulator等)的源代碼;Android NDK的源代碼;硬件抽象層HAL的源代碼等等。

  《Android源碼解析》系列博文將記錄下我學習Android源碼過程中的點點滴滴。

 

1.安裝Git工具

  Android源代碼采用了Git版本控制工具來進行管理。可以使用如下的命令在ubuntu操作系統上安裝Git工具:

    root@ubuntu:~# apt-get install git-core gnupg

   安裝過程中,遇到了【404 Not Found】的錯誤,如圖1所示。

圖1 【404 Not Found】錯誤

   原因是在http://us.archive.ubuntu.com/ubuntu/源上找不到Git軟件資源。解決辦法是換一個有效的源。具體方法如下:

   選擇“Applications”菜單下的“Ubuntu Software Center”選項,在彈出的“Ubuntu Software Center”對話框中選擇“Edit”菜單下的“Software Sources”選項,將彈出如圖2所示的“Software Sources”對話框。

 圖2 “Software Sources”對話框

   在如圖2所示的“Software Sources”對話框中選擇“Download from”中的“Other”選項。將彈出所圖3所示的“Chose a Download Server”對話框。

 圖3 “Chose a Download Server”對話框

   在如圖3所示的“Choose a Download Server”對話框中選擇“Select Best Server”,系統會自動尋找出最好的源來,最后點擊“Choose Server”即可。

  更換了源之后,Git就可以順利的安裝了。

 

2.下載repo工具

  在下載Android源碼之前,需要先下載一個repo工具,在這個工具中封裝了用來下載Android源碼所需要的git命令。

  repo工具的下載和安裝方法如下:

  root@ubuntu:~# wget https://dl-ssl.google.com/dl/googlesource/git-repo/repo
  root@ubuntu:~# chmod a+x repo
  root@ubuntu:~# mv repo /bin/

   通過以上的操作,我們下載了repo工具,然后修改其權限為可執行,最后將repo工具放到了/bin目錄下。

 

3.下載Android源代碼

  現在,我們就可以新建一個空目錄,用來放置下載好的Android源碼了。這里,我的存放目錄為:/home/menlsh/AndroidSrc。

  在AndroidSrc目錄下執行如下的命令就可以開始下載Android源碼了,這里我選擇了下載Android4.0版本的源碼。

  root@ubuntu:/home/menlsh/AndroidSrc# repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
  root@ubuntu:/home/menlsh/AndroidSrc# repo sync

   接下來,便是漫長的等待時間了。repo支持斷點續存,所以如果在下載過程中碰到網絡中斷的現象,只需要重復執行repo sync命令就可以繼續下載了。

  在下載過程中,AndroidSrc目錄中是沒有文件內容顯示的。下載完成后,會出現如圖4所示“done”信息提示。

 圖4 下載完成

  同時,在AndroidSrc目錄中可以看到如圖5所示的Android源碼目錄結構。

 圖5 Android源碼目錄結構

  至此,Android源碼便算是下載完成了。

 

4.Android源碼目錄結構解析

  由圖5可以看出,在Android源碼目錄中包含了很多的子目錄,下面就來說說這些子目錄所代表的含義。

  (1)abi:應用程序二進制接口(Application Binary Interface)

  (2)bionic:C/C++運行時庫

  (3)bootable:用於Android裝載和啟動程序,包括bootloader和recovery等

  (4)build:用於編譯Android源碼以及建立system.img、ramdisk.img等文件的工具

  (5)cts:用於兼容性測試的工具

  (6)dalvik:Dalvik虛擬機的源代碼

  (7)development:一些開發和測試工具

  (8)device:與設備相關的代碼

  (9)docs:Android源代碼項目相關的文檔和工具

  (10)external:擴展工具的源代碼

  (11)frameworks:Android框架層源代碼(也就是Android SDK的源代碼)

  (12)hardware:硬件層接口和庫(HAL的源代碼)

  (13)libcore:Java核心庫

  (14)ndk:NDK的源代碼

  (15)packages:與Android系統一起發布的應用程序的源代碼(如拍照、計算器等)

  (16)prebuilt:Android在各種平台下編譯之前要使用的工具

  (17)sdk:在開發環境中使用到的工具(如ddms、draw9patch等)

  (18)system:Android基本系統

  (19)Makefile:編譯腳本

  在這些目錄中,device、frameworks、hardware、packages將是我重點進行學習的對象,也將會是本系列博文的主要介紹內容。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM