根據(jù)官方提供的系統(tǒng)架構(gòu)圖顯示,Android系統(tǒng)架構(gòu)分為四層:
Applications(應(yīng)用程序?qū)樱?br>
Application Framework(應(yīng)用框架層)
System RunTime Layer(系統(tǒng)運(yùn)行庫(kù)層):
? ? ? ? ? ? ?Libraries(系統(tǒng)庫(kù))和Android RunTime(Android運(yùn)行時(shí))
Linux Kernel(Linux內(nèi)核層)

?1.應(yīng)用程序?qū)?/p>
Android會(huì)自帶一些核心應(yīng)用程序,包括Home(主屏)、E-mail客戶端、SMS/MMS短消息程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等。所有程序都是使用Java語(yǔ)言開(kāi)發(fā),通過(guò)調(diào)用應(yīng)用程序框架層(Application Framework)所提供的API來(lái)完成。當(dāng)然也可以使用Java通過(guò)JNI方式,配合Android NDK來(lái)開(kāi)發(fā)原生的應(yīng)用程序,這樣可以提高應(yīng)用程序的效率,但是開(kāi)發(fā)難度加大,且Android NDK提供的功能有限。
2.應(yīng)用程序框架層
為開(kāi)發(fā)人員提供了可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架。
Activity Manager(活動(dòng)管理器):管理應(yīng)用程序生命周期、常用的導(dǎo)航回退功能
Window Manager(窗口管理器):管理所有開(kāi)啟的窗口程序
Content Providers(內(nèi)容提供器):不同應(yīng)用程序間的數(shù)據(jù)共享和訪問(wèn)
View System(視圖系統(tǒng)):list(列表)、grid(網(wǎng)格)、text box(文本框)等
Notification Manager(通知管理器):在狀態(tài)欄顯示自定義的提示信息
Package Manager(包管理器):管理Android系統(tǒng)中的所有應(yīng)用程序
Resource Manager(資源管理器):提供資源供應(yīng)用程序使用
Location Manager(位置管理器):提供位置服務(wù)
XMPP Service(XMPP服務(wù)):提供Google Talk服務(wù),是一種通訊服務(wù)
Telephony Manager(電話管理器):電話撥打和接聽(tīng)等相關(guān)服務(wù)
3.系統(tǒng)運(yùn)行庫(kù)層
(1)Libraries(系統(tǒng)庫(kù))
? ? 系統(tǒng)庫(kù)是應(yīng)用程序框架的支撐,是連接應(yīng)用程序框架層與Linux內(nèi)核層的重要紐帶。
? ? Surface Manager:執(zhí)行多個(gè)應(yīng)用程序時(shí)候,負(fù)責(zé)管理顯示與存取操作間的互動(dòng),另外也負(fù)責(zé)2D繪圖與3D繪圖進(jìn)行顯示合成。
? ? Media Framework:基于PacketVideo OpenCORE,該庫(kù)支持多種格式的音頻和視頻的回放和錄制,同時(shí)支持靜態(tài)圖像文件。編碼格式包括MPEG4、H264、MP3、AAC、AMR、JPG、PNG
? ? SQLite:小型關(guān)系型數(shù)據(jù)庫(kù)引擎
? ? Opengl ES:支持OpenGL ES1.x和OpenGL ES 2.0。標(biāo)準(zhǔn)實(shí)現(xiàn)的3D繪圖函數(shù)庫(kù)以及3D加速
? ? SGL:底層的2D圖像引擎,使用skia作為核心圖像引擎
? ? FreeType:位圖和矢量字體的顯示
? ? Webkit:Web瀏覽器引擎
? ? SSL:為網(wǎng)絡(luò)通信提供安全以及數(shù)據(jù)完整性的一種協(xié)議
? ?Libe:從BSD繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù),專門(mén)為基于embedded linux的設(shè)備定制
(2)Android RunTime(Android運(yùn)行時(shí))
? ? 由Core Libraries(核心庫(kù))和Dalvik虛擬機(jī)組成。
? ? 核心庫(kù):
? ? 核心庫(kù)提供了Java語(yǔ)言API中的大多數(shù)功能,主要通過(guò)JNI的方式向應(yīng)用程序框架層提供調(diào)用底層程序庫(kù)的接口。同時(shí)也包含了Android的一些核心API,如android.os、android.net、android.media等等。
? ?Dalvik虛擬機(jī):
? ?Android程序不同于J2me程序,每個(gè)Android應(yīng)用程序都有一個(gè)專有的進(jìn)程,并且不是多個(gè)程序運(yùn)行在一個(gè)虛擬機(jī)中,而是每個(gè)Android程序都有一個(gè)Dalivik虛擬機(jī)的實(shí)例,并在該實(shí)例中執(zhí)行。Dalvik虛擬機(jī)是一種基于寄存器的Java虛擬機(jī),而不是傳統(tǒng)的基于棧的虛擬機(jī),并進(jìn)行了內(nèi)存資源使用的優(yōu)化以及支持多個(gè)虛擬機(jī)的特點(diǎn)。需要注意的是,不同于J2me,Android程序在虛擬機(jī)中執(zhí)行的并非編譯后的字節(jié)碼,而是通過(guò)轉(zhuǎn)換工具dx將Java字節(jié)碼轉(zhuǎn)成dex格式的中間碼。
4.Linux內(nèi)核層
? ? Android是基于Linux2.6內(nèi)核,其核心系統(tǒng)服務(wù)如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)路協(xié)議以及驅(qū)動(dòng)模塊等。對(duì)內(nèi)核增強(qiáng)主要表現(xiàn)在以下方面:
? ? Alarm(硬件時(shí)鐘)
? ? Ashmem(內(nèi)存分配與共享)
? ?Low Memory Killer(低內(nèi)存管理器)
? ?Kernel Debugger(Kernel調(diào)試)
? ?Logger(日志設(shè)備)
? ?Binder(Android IPC機(jī)制)
? ?Power Management(電源管理)
注釋:內(nèi)容來(lái)自《Android技術(shù)內(nèi)幕》