Android 系統(tǒng)架構(gòu)
從下到上分為五層
1 Linux Kernel Linux 內(nèi)核層
Android 系統(tǒng)核心服務(wù)基于 Linux 內(nèi)核
為 Android 設(shè)備的各個(gè)硬件提供了各種底層專用驅(qū)動(dòng)
內(nèi)存管理势决,進(jìn)程管理阻塑,網(wǎng)絡(luò)協(xié)議
- PowerManagement 電源管理
- Drivers
如 Audio Driver、Camera Driver果复、USB Driver陈莽、Display Driver、Bluetooth Driver虽抄、Binder(IPC) Driver 等
2 Hareware Abstraction Layer 硬件抽象層 HAL
位于硬件電路和系統(tǒng)內(nèi)核之間的接口層走搁,Android 5.0 新增,對(duì) Linux 內(nèi)核驅(qū)動(dòng)程序的封裝迈窟,向上提供接口私植,屏蔽底層的實(shí)現(xiàn)細(xì)節(jié)
如 Audio、Camera车酣、Bluetooth 等
- 將硬件抽象化曲稼,隱藏各平臺(tái)硬件接口細(xì)節(jié),保護(hù)了硬件廠商的知識(shí)產(chǎn)權(quán)
- 為操作系統(tǒng)提供虛擬硬件平臺(tái)湖员,使其具有硬件無關(guān)性贫悄,可實(shí)現(xiàn)跨平臺(tái)移植
軟硬件測(cè)試可以基于硬件接口層來完成,讓軟硬件并行測(cè)試成為了可能
3 系統(tǒng)運(yùn)行庫層
Native C/C++ Libraries C/C++ 程序庫
系統(tǒng)庫提供了一系列系統(tǒng)功能破衔,能被 Android 系統(tǒng)中的不同組件所使用清女,通過應(yīng)用程序框架可以為開發(fā)者提供服務(wù),另外可以通過 Android NDK 為開發(fā)者提供了可以直接使用系統(tǒng)資源的能力
如 SQLite晰筛、OpenGL ES嫡丙、Media Framework、Suface Manager读第、Webkit曙博、SSL 等-
Android Runtime Android 運(yùn)行時(shí)
-
Core Libraries
提供了 Java SE API 的絕大數(shù)功能,也提供了 Android 的核心 API怜瞒,允許開發(fā)者用 Java 編寫 Android 應(yīng)用
-
ART(以前是 Dalvik Virtual Machine)
使得每個(gè)Android 程序擁有一個(gè)獨(dú)立的進(jìn)程中父泳,都擁有自己的虛擬機(jī)實(shí)例
完成生命周期管理般哼、堆棧管理、內(nèi)存管理惠窄、垃圾回收
-
Dalvik Virtual Machine(Android 5.0 后被 ART 取代)
運(yùn)行時(shí)編譯:Dalvik 虛擬機(jī)每次運(yùn)行 字節(jié)碼 都需要用 Just In Time 及時(shí)編譯器 JIT 轉(zhuǎn)換成 機(jī)器碼
-
Android Runtime(Android 4.4 開始發(fā)布)
安裝時(shí)編譯:ART 每次安裝時(shí)會(huì)進(jìn)行一次 Ahead Of Time 預(yù)編譯 AOT 蒸眠,將字節(jié)碼預(yù)編譯成 機(jī)器碼 存在本地,做到空間換時(shí)間杆融,所以耗費(fèi)更多存儲(chǔ)空間楞卡,安裝時(shí)間拉長(zhǎng)
-
-
4 Java API Framework
這一層主要提供一些 Java 編寫的 API 以供開發(fā) APP 時(shí)調(diào)用
如 Activity、ContentProviders脾歇、Notification蒋腮、Window
5 System Apps
如 Email、Camera藕各、Brower 等