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

來源:互聯網
上載者:User

  在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將是我重點進行學習的對象,也將會是本系列博文的主要介紹內容。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.