Android系統架構

   最近爲了更深入的學習,由於遇到一本不錯的書,所以開始寫相關的讀書筆記。同時開始練習相關的Markdwon寫法。

1Android 系統機構

1. 應用層

2. 應用框架層(Java Framework)

提供的一些常用的API

名稱 功能描述
Activity Manager(活動管理器) 管理各個應用程序生命週期以及通常的導航回退功能
Location Manager(位置管理器) 提供地理位置以及定位功能服務
Package Manager(包管理器) 管理所有安裝在Android系統中的應用程序
Notification Manager(通知管理器) 使得應用程序可以在狀態欄中顯示自定義的提示信息
Resource Manager(資源管理器) 提供應用程序使用的各種非代碼資源,如本地化字符串、圖片、佈局文件、顏色文件等
Telephony Manager(電話管理器) 管理所有的移動設備功能
Window Manager(窗口管理器) 管理所有開啓的窗口程序
Content Providers(內容提供器) 使得不同應用程序之間可以共享數據
View System(視圖系統) 構建應用程序的基本組件

3. 系統運行庫層(Native)

1. C/C++程序庫

名稱 功能描述
OpenGL ES 3D繪圖函數庫
Libc 從BSD 繼承來的標準C系統函數庫,專門爲基於嵌入式Linux的設備定製
Media Framework 多媒體庫,支持多種常用的音頻、視頻格式錄製和回放。
SQLite 輕型的關係型數據庫引擎
SGL 底層的2D圖形渲染引擎
SSL 安全套接層,是爲網絡通信提供安全及數據完整性的一種安全協議
FreeType 可移植的字體引擎,它提供統一的接口來訪問多種字體格式文件

2. Android運行時庫

運行時庫又分爲核心庫和ART(5.0系統之後,Dalvik虛擬機被ART取代)。DVM和ART相比進步的地方: 在Dalvik下,應用每次運行的時候,字節碼都需要通過即時編譯器轉換爲機器碼,這會拖慢應用的運行效率,而在ART 環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼。

3. 硬件抽象層(HAL)

通俗來講,就是將控制硬件的動作放在硬件抽象層中。

4. Linux內核層

2.Android系統源碼目錄

如果沒有下載的源碼,在線查看推薦http://androidxref.com.查詢搜索還是很快。

1.整體結構

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文件,用來定義編譯規則

2.應用層部分

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

3.應用框架層部分

/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無線網絡

4.C/C++程序庫部分

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

3.Android源碼閱讀

1.在線閱讀

推薦http://androidxref.com. 查詢速度相對可以

2.使用Source Insight閱讀

第一章的主要 內容就到這裏了,詳細的內容還需要實踐去操作,比如真正的挑選到感興趣的部分去閱讀源碼。

發佈了17 篇原創文章 · 獲贊 10 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章