|
簡介
在使用Andriod SDK進(jìn)行應(yīng)用程序開發(fā)的時候,我們需要對源代碼進(jìn)行調(diào)試,有可能需要進(jìn)入到某個Android API函數(shù)內(nèi)部進(jìn)行跟蹤調(diào)試。但是,如果目標(biāo)版本的SDK沒有關(guān)聯(lián)對應(yīng)版本的源代碼的話,就會提示你找不到源代碼。
圖:找不到Android源碼的提示
我們都知道Android系統(tǒng)是一個開源工程,在網(wǎng)上可以下載到源代碼。一般在網(wǎng)上搜索一下,就會找到各種下載源代碼的方法,比如使用Git和Repo,Android源代碼下載的網(wǎng)址是http://Android.git.kernel.org/。關(guān)于利用Git下載Android源代碼的方法,我就不再贅述了,因?yàn)榫W(wǎng)上的方法很多,這里給出一個參考鏈接Windows平臺下Android源碼的下載。
如果你跟我一樣是初學(xué)者,相信看了上面的文章,你就知道如何使用Git下載Android源碼了。但是,看著http://Android.git.kernel.org/ 站點(diǎn)下的各種目錄和文件,相信你也會跟我一樣傻眼,不知道那個目錄下的文件對應(yīng)是什么代碼,想找到自己所需要的東西都比較難了。所以這里給大家介紹一下Android源代碼的結(jié)構(gòu),如果發(fā)現(xiàn)文章有錯誤之處,還請各位童鞋輕點(diǎn)砸磚!
圖:http://Android.git.kernel.org/ 下紛繁復(fù)雜的文件
認(rèn)識Android源代碼結(jié)構(gòu)之前,先來再熟悉一下Android的系統(tǒng)架構(gòu)吧!Android系統(tǒng)架構(gòu)被分為四層,自下而上分別是:Linux操作系統(tǒng)及驅(qū)動層、本地框架和Java運(yùn)行環(huán)境、Java框架、Java應(yīng)用層。每一層的具體介紹在此就略過了。
圖:Android系統(tǒng)架構(gòu)
認(rèn)識Android源代碼結(jié)構(gòu)
Android代碼的工程分為3個部分,在打開http://Android.git.kernel.org/ 后看到的,就是Android源代碼的根目錄。(建議:打開這個網(wǎng)站后,對照學(xué)習(xí)以下內(nèi)容)
- 核心工程(Core Project):建立Android 系統(tǒng)的基礎(chǔ),在根目錄的各個文件夾中。
- 擴(kuò)展工程(External Project):使用其他開源項(xiàng)目擴(kuò)展的功能,在external 文件夾中。
- 包(Package):提供Android 的應(yīng)用程序和服務(wù),在package 文件夾中。
1、Android 的核心工程
Android 的核心工程包含了對Android系統(tǒng)基本運(yùn)行的支持,以及Android系統(tǒng)的編譯系統(tǒng),工程的內(nèi)容如下表:
工程名稱 | 工程描述 |
bionic | [Build 系統(tǒng)] C運(yùn)行時支持:libc、libm、libdl、動態(tài)linker |
bootloader/legacy | Bootloader 參考代碼 (內(nèi)核加載器,在內(nèi)核運(yùn)行之前運(yùn)行) |
build | [Build 系統(tǒng)] Build系統(tǒng) |
dalvik | Dalvik虛擬機(jī) |
delelopment | 高層的開發(fā)和調(diào)試工具 |
framework/base | Android 核心的框架庫 |
framework/policies/base | 框架配置策略 |
hardware/libhardware | 硬件抽象層庫 |
hardware/ril | 無線接口層(Radio Interface Layer) |
kernel | Linux 內(nèi)核 |
prebuilt | [預(yù)編譯內(nèi)核] 對Linux 和 Mac OS 編譯的二進(jìn)制支持 |
system/core | 最小化可啟動的環(huán)境 |
system/extras | 底層調(diào)試和檢查工具 |
it知識庫:Android 源代碼結(jié)構(gòu),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。