Android平臺架構

Android系統的底層建立在Linux系統之上,該平臺由操作系統、中間件、用戶界面和應用軟件四層組成,它採用一種被稱爲軟件疊層(software stack)的方式進行構建。這種軟件疊層結構使得之間相互分離,明確各層的分工。這種分工保證了層與層之間的低耦合,當下層的層內或層下發生改變時,上層應用程序無需任何改變。

Android系統主要由五部分組成,下面分別對這5部分進行介紹:

1.應用程序層

Android系統將會包含系列的核心應用程序,這些程序包括電子郵件客戶端、SMS程序、日曆、地圖、瀏覽器、聯繫人等、這些應用程序都是用JAVA編寫的。

2.應用程序框架

    當我們開發Andorid應用程序時,就是面向底層的應用程序框架進行的。從這個意義上看,Android系統上的應用程序時完全平等的,不管是Andorid系統提供的程序,還是普通開發者提供的程序,他們都可以訪問Andorid提供的API框架。

     Android應用程序框架提供了大量API供開發者使用。應用程序框架可作爲應用程序開發的基礎之外,也是軟件複用的重要手段,任何一個應用程序都可發佈它的功能模塊----只要發佈時遵守了框架的約定,那麼其他應用程序也可使用這個功能模塊。

3.函數庫

     Andorid包含一套被不同組件所使用的C/C+庫的集合。一般來說,Android應用開發者不能直接調用這套C/C庫集合。一般來說,Android應用開發者不能直接調用這套C/C+庫集,但可以通過它上面的應用程序框架來調用這些庫。

下面列出一些核心庫:

1)系統C庫:一個從BSD系統派生出來的標準C系統庫(libc),並且專門爲嵌入式Linux設備調整過。

2) 媒體庫:基於PacketVideo的OpenCORE,這套媒體庫支持播放和錄製許多流行的音頻和視頻格式,以及查看靜態圖片。主要包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等多媒體格式。

3)Surface Manager:管理對子系統的訪問,並可以 對多個應用程序的2D和3D圖層機提供無縫整合。

4)LibWebCore:一個全新的Web瀏覽器引擎,該引擎爲Android瀏覽器提供支持,也爲WebView提供支持,WebView完全可以嵌入開發者自己的應用程序中。

5)SGL:底層的2D圖形引擎。

6)3D libraries:基於OpenGL ES 1.0 API 實習的3D系統,這套3D庫既可以使用硬件3D加速(如果硬件系統支持),也可以使用高度優化的、軟件3D加速。

7)FreeType:位圖和向量字體顯示。

8)SQLite:供所有應用程序使用的、功能強大的輕量級關係數據庫。

4.Android運行時

Android運行時由兩部分組成:Android核心庫集和Dalvik虛擬機。其中核心庫提供了Java語言核心庫所能使用的絕大部分功能,而虛擬機則負責運行Android應用程序。

每個Andorid應用程序都運行在單獨的一個Dalvik虛擬機內,因此Dalvik專門針對同時高效地運行多個虛擬機進行了優化,因此Andorid系統可以方便地實現對應用程序進行隔離。

實際上,JVM虛擬機運行的是Java字節碼(通常是.class文件),但Dalvik運行的是其專有的dex(Dalvik Executable)文件。JVM直接從.class文件或JAR包中加載字節碼然後運行;而Dalvik則無法直接從.class文件或JAR包中加載字節碼,它需要對DX工具將應用程序的所有.class文件編譯成.dex文件,Dalvik則運行該.dex文件。

Dalvik虛擬機非常適合在移動終端上使用,相對於在PC或服務器上運行的虛擬機而言,Dalvik虛擬機不需要很快的CPU計算速度和大量的內存空間,它主要有如下兩個特點:

1)運行專有的.dex文件。專有的.dex文件減少了.class文件中冗餘信息,而且會把所有.class文件整合到一個文件中,從而提高運行性能;而且DX工具還會對所有文件進行一些性能的優化;

2)基於存儲器實現。大多數虛擬機包括JVM都是基於棧的,而Dalvik虛擬機則是基於寄存器的。一般來說,基於寄存器的虛擬機具有更好的性能表現,但在硬件通用性上略差。

Dalvik虛擬機依賴於Linux內核提供的核心功能,如線程和底層內存管理。

5.Lniux內核

Android系統建立在Linux 2.6之上,Linux內核提供了安全性、內存管理、進程管理、網絡協議棧和驅動模型等核心系統服務。除此之外,Linux內核也是系統硬件和軟件疊層之間的抽象層。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章