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