Android系統源碼目錄


Android系統源碼目錄

我們要先了解Android系統源碼目錄,為后期源碼學習打下基礎。關於源碼的閱讀,你可以訪問http://androidxref.com/來閱讀系統源碼。當然,最好是將源碼下載下來。下載源碼可以使用清華大學開源軟件鏡像站提供的Android 鏡像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 。如果覺得麻煩也可以查找國內的網盤進行下載,推薦使用該百度網盤地址下載:http://pan.baidu.com/s/1ngsZs,它提供了多個Android版本的的源碼下載。

源碼整體結構

各個版本的源碼目錄基本是類似,如果是編譯后的源碼目錄會多增加一個out文件夾,用來存儲編譯產生的文件。Android7.0的根目錄結構說明如下表所示

Android源碼根目錄 描述
abi 應用程序二進制接口
art 全新的ART運行環境
bionic 系統C庫
bootable 啟動引導相關代碼
build 存放系統編譯規則及generic等基礎開發包配置
cts Android兼容性測試套件標准
dalvik dalvik虛擬機
developers 開發者目錄
development 應用程序開發相關
device 設備相關配置
docs 參考文檔目錄
external 開源模組相關文件
frameworks 應用程序框架,Android系統核心部分,由Java和C++編寫
hardware 主要是硬件抽象層的代碼
libcore 核心庫相關文件
libnativehelper 動態庫,實現JNI庫的基礎
ndk NDK相關代碼,幫助開發人員在應用程序中嵌入C/C++代碼
out 編譯完成后代碼輸出在此目錄
packages 應用程序包
pdk Plug Development Kit 的縮寫,本地開發套件
platform_testing 平台測試
prebuilts x86和arm架構下預編譯的一些資源
sdk sdk和模擬器
system 底層文件系統庫、應用和組件
toolchain 工具鏈文件
tools 工具文件
Makefile 全局Makefile文件,用來定義編譯規則

表3

從表3可以看出,系統源碼分類清晰,並且內容龐大且復雜。接下來分析packages中的內容,也就是應用層部分.

1 應用層部分

應用層位於整個Android系統的最上層,開發者開發的應用程序以及系統內置的應用程序都是在應用層。源碼根目錄中的packages目錄對應着系統應用層。它的目錄結構如表4所示

packages目錄 描述
apps 核心應用程序
experimental 第三方應用程序
inputmethods 輸入法目錄
providers 內容提供者目錄
screensavers 屏幕保護
services 通信服務
wallpapers 牆紙

表4

從目錄結構可以發現,packages目錄存放着系統核心應用程序、第三方的應用程序和輸入法等等,這些應用都是運行在系統應用層的,因此packages目錄對應着系統的應用層.

2 應用框架層部分(Framework)

應用框架層是系統的核心部分,一方面向上提供接口給應用層調用,另一方面向下與C/C++程序庫以及硬件抽象層等進行銜接。 應用框架層的主要實現代碼在/frameworks/base和/frameworks/av目錄下,其中/frameworks/base目錄結構如表5所示

/frameworks/base目錄 描述 /frameworks/base目錄 描述
api 定義API cmds 重要命令:am、app_proce等
core 核心庫 data 字體和聲音等數據文件
docs 文檔 graphics 圖形圖像相關
include 頭文件 keystore 和數據簽名證書相關
libs location 地理位置相關庫
media 多媒體相關庫 native 本地庫
nfc-extras NFC相關 obex 藍牙傳輸
opengl 2D/3D 圖形API packages 設置、TTS、VPN程序
sax XML解析器 services 系統服務
telephony 電話通訊管理 test-runner 測試工具相關
tests 測試相關 tools 工具
wifi wifi無線網絡    

表5

3 系統運行庫層部分(Native)

3.1 C/C++程序庫部分

系統運行庫層(Native)中的 C/C++程序庫的類型繁多,功能強大,C/C++程序庫並不完全在一個目錄中,這里給出幾個常用且比較重要的C/C++程序庫所在的目錄位置

目錄位置 描述
bionic/ Google開發的系統C庫,以BSD許可形式開源
/frameworks/av/media 系統媒體庫
/frameworks/native/opengl 第三方圖形渲染庫
/frameworks/native/services/surfaceflinger 圖形顯示庫,主要負責圖形的渲染、疊加和繪制等功能
external/sqlite 輕量型關系數據庫SQLite的C++實現

表6

3.2 Android運行時庫部分

Android運行時庫的代碼放在art/目錄中(表3)。

4 硬件抽象層部分(HAL)

硬件抽象層的代碼在hardware/目錄中(表3),這一部分是手機廠商改動最大的一部分,根據手機終端所采用的硬件平台會有不同的實現。


免責聲明!

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



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