Android的系統(tǒng)架構(gòu)

根據(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)幕》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容