![]() |
|
Android系統(tǒng)框架圖詳解 |
|
Android系統(tǒng)從下至上分為4層:Linux內(nèi)核、Android程序庫(kù)及Android運(yùn)行時(shí)、Android應(yīng)用程序框架,以及應(yīng)用程序等。
1. Linux內(nèi)核(Linux Kernel) Android的核心系統(tǒng)服務(wù)依賴于Linux 2.6,例如安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧、驅(qū)動(dòng)模型。Linux Kernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù)。(推薦閱讀:Linux內(nèi)核模塊程序結(jié)構(gòu)) 除了標(biāo)準(zhǔn)的Linux內(nèi)核之外,Android系統(tǒng)還增加了內(nèi)核的驅(qū)動(dòng)程序,例如,顯示驅(qū)動(dòng)、藍(lán)牙驅(qū)動(dòng)、相機(jī)驅(qū)動(dòng)、閃存卡驅(qū)動(dòng)、Binder IPC驅(qū)動(dòng)、輸入設(shè)備驅(qū)動(dòng)、USB驅(qū)動(dòng)、Wi-Fi驅(qū)動(dòng)、音頻系統(tǒng)驅(qū)動(dòng)、電源管理等,這些驅(qū)動(dòng)程序?yàn)锳ndroid系統(tǒng)的運(yùn)行提供基礎(chǔ)性支持。 這樣分層的好處是在使用下層提供的服務(wù)的同時(shí)也為上層提供統(tǒng)一的服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會(huì)影響到上層。也就是說(shuō),各層各盡其職,各層提供固定的SAP(Service Access Point),即高內(nèi)聚、低耦合。 2. Android程序庫(kù)(Libraries) Android包含一個(gè)C/C++庫(kù)的集合,以供Android系統(tǒng)的各個(gè)組件使用。這些功能通過(guò)Android的應(yīng)用程序框架(Application Framework)展現(xiàn)給開(kāi)發(fā)者。下面列出一些核心庫(kù): ·系統(tǒng)C庫(kù)——由BSD繼承衍生的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù)(libc),調(diào)整為基于嵌入式Linux設(shè)備的庫(kù)。 ·媒體庫(kù)——基于PacketVideo的OpenCORE。這些庫(kù)支持播放和錄制多種常見(jiàn)的音頻和視頻格式,以及多種媒體的編碼/解碼格式,包括MPEG-4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG。 ·界面管理——顯示子系統(tǒng)的管理器,管理訪問(wèn)顯示子系統(tǒng)和無(wú)縫組合多個(gè)應(yīng)用程序的二維和三維圖形層。 ·LibWebCore——新式的Web瀏覽器引擎,驅(qū)動(dòng)Android 瀏覽器和可嵌入的Web視圖。 ·SGL——Skia圖形庫(kù),基本的2D圖形引擎。 ·3D libraries——基于OpenGL ES 1.0 APIs的實(shí)現(xiàn)。該庫(kù)使用硬件3D加速或使用高度優(yōu)化的3D軟加速。 ·FreeType ——位圖(bitmap)和矢量(vector)字體渲染。 ·SQLite ——所有應(yīng)用程序都可以使用的強(qiáng)大而輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù)引擎。 3. Android運(yùn)行時(shí)(Android Runtime) 在Linux內(nèi)核層上還有一個(gè)Android運(yùn)行時(shí)層,該層包括Dalvik虛擬機(jī)及Java核心庫(kù),提供了Java編程語(yǔ)言核心庫(kù)的大多數(shù)功能。 Dalvik虛擬機(jī)是Android使用的Java虛擬機(jī)。每一個(gè)Android應(yīng)用程序都是Dalvik虛擬機(jī)中的實(shí)例,運(yùn)行在它們自己的進(jìn)程中。Dalvik虛擬機(jī)設(shè)計(jì)成在一個(gè)設(shè)備中可以高效地運(yùn)行多個(gè)虛擬機(jī)。Dalvik虛擬機(jī)可執(zhí)行文件格式是.dex,.dex格式是專(zhuān)為Dalvik設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。 大多數(shù)虛擬機(jī)包括JVM都是基于棧的,而Dalvik虛擬機(jī)則是基于寄存器的。兩種架構(gòu)各有優(yōu)劣。一般而言,基于棧的機(jī)器需要更多指令,而基于寄存器的機(jī)器指令更大。dex 是一套工具,可以將 Java的.class格式轉(zhuǎn)換成 .dex 格式。一個(gè).dex文件通常會(huì)有多個(gè).class。由于.dex有時(shí)必須進(jìn)行佳化,會(huì)使文件大小增加1~4倍,以odex結(jié)尾。 Dalvik虛擬機(jī)依賴于Linux 內(nèi)核提供基本功能,如線程和底層內(nèi)存管理。 4. Android應(yīng)用程序框架(Application Framework) 位于Android程序庫(kù)和運(yùn)行時(shí)上面的是應(yīng)用程序框架層。通過(guò)提供開(kāi)放的開(kāi)發(fā)平臺(tái),Android使開(kāi)發(fā)者能夠訪問(wèn)核心應(yīng)用程序所使用的API框架,這樣使得組件的重用得以簡(jiǎn)化,任何應(yīng)用程序都能發(fā)布它的功能且任何其他應(yīng)用程序可以使用這些功能(需要服從框架執(zhí)行的安全限制),從而使開(kāi)發(fā)者可以編制極其豐富和新穎的應(yīng)用程序,自由地利用設(shè)備硬件優(yōu)勢(shì)訪問(wèn)位置信息、運(yùn)行后臺(tái)服務(wù)、設(shè)置鬧鐘、向狀態(tài)欄添加通知等。 每個(gè)應(yīng)用程序其實(shí)是一組服務(wù)和系統(tǒng),包括如下內(nèi)容。 ·視圖(View)——豐富的、可擴(kuò)展的視圖集合,用來(lái)構(gòu)建應(yīng)用程序。包括列表(Lists)、網(wǎng)格(grids)、文本框(Textboxs)、按鈕(Buttons),甚至是可嵌入的網(wǎng)頁(yè)瀏覽器。 ·內(nèi)容提供器(Content Providers)——使應(yīng)用程序可以訪問(wèn)其他應(yīng)用程序(如通訊錄)的數(shù)據(jù),或共享自己的數(shù)據(jù)。 ·資源管理器(Resource Manager)——提供對(duì)于非代碼資源的訪問(wèn),如本地化字符串、圖形和布局文件。 ·消息管理器(Notification Manager)——使得應(yīng)用程序能夠在狀態(tài)欄顯示自定義的提示信息。 ·活動(dòng)管理器(Activity Manager)——管理應(yīng)用程序生命周期,并提供常用的導(dǎo)航回退功能。 5. Android應(yīng)用程序和小部件 Android裝配一個(gè)核心應(yīng)用程序集合,連同系統(tǒng)一起發(fā)布,這些應(yīng)用程序包括電子郵件、客戶端、SMS程序、日歷、地圖、瀏覽器、聯(lián)系人和其他設(shè)置等。而所有應(yīng)用程序都是用Java語(yǔ)言編寫(xiě)的,由用戶開(kāi)發(fā)的Android應(yīng)用程序和Android核心應(yīng)用程序是同一層次的。 華清遠(yuǎn)見(jiàn)Android開(kāi)發(fā)教程免費(fèi)下載 熱點(diǎn)鏈接:
1、Android模擬器與真機(jī)的區(qū)別 |