1. 程式人生 > >Android平臺架構簡介

Android平臺架構簡介

Android系統介紹

Android系統的底層建立在Linux系統之上,該平臺由Linux核心層、系統執行庫層、應用框架層及應用層四層組成,它採用一種被稱為軟體疊層(Software Stack)的方式進行構建。這各軟體疊層結構使得層與層之間相互分離,明確各層的分工。這種分工保證了層與層之間的低耦合,當下層的層內或層下發生變化時,上層應用程式無須任何改變。以下就對不同層分別加以介紹:

Linux核心層

Android系統建立在Linux 2.6之上,這一層為Android裝置的各種硬體提供了底層的驅動(Linux核心提供了安全性、記憶體管理、程序管理、網路協議和驅動模型等核心系統服務)。

Linux核心也是系統硬體和軟體疊層之間的抽象層

系統執行庫層

這一層通過一些C/C++庫來為Android系統提供了主要的特性支援。此層中還有Android執行時庫,它主要提供一些核心庫,來允許開發者使用Java語言來編寫Android應用。因此可以將此層看作由提供Android系統特性的函式庫Android執行時庫兩部分組成,以下就對其進行分別介紹:

提供Android系統特性的函式庫

Android包含一組C/C++庫,這些庫為Android系統提供了主要的特性支援。一般說來,Android應用開發者不能直接呼叫這套C/C++庫集,但可以通過其上的應用框架層來呼叫這些庫。

常用的一些核心庫有:系統C庫、媒體庫、Surface Manager、LibWebCore、SGL、3D libraries、FreeType及SQLite等。

Android執行時庫

Android執行時庫由Android核心庫集Dalvik虛擬機器兩部分組成。Android核心庫集,能夠允許開發者使用Java語言來編寫Android應用;而Dalvik虛擬機器則使得每一個Android應用都能執行在獨立的程序中,並且擁有一個自己的Dalvik虛擬機器例項

Android虛擬機器與Java虛擬機器
  1. Dalvik並未遵守JVM規範,兩者也不相容。
  2. JVM虛擬機器執行的是Java位元組碼(通常是.class檔案),但Dalvik執行的是其專有的dex(Dalvik Executable)檔案。
  3. JVM直接從.class檔案或JAR包中載入位元組碼然後執行,而Dalvik則需要通過DX工具將應用程式的所有.class檔案編譯成.dex檔案,然後再執行該.dex檔案。

Dalvik虛擬機器依賴於Linux核心提供的核心功能,如執行緒和底層記憶體管理。Dalvik虛擬機器非常適合在移動終端上使用,相對於在PC或伺服器上執行的虛擬機器而言,Dalvik虛擬機器不需要很快的CPU計算速度和大量的記憶體空間,它主要有如下兩個特點:

  1. 執行專有的.dex檔案。專有的.dex檔案減少了.class檔案中的冗餘資訊,而且會把所有.class檔案整合到一個檔案中,從而提高執行效能;而且DX工具還會對.dex檔案進行一些效能的優化。
  2. 基於暫存器實現。大多數虛擬機器包括JVM都是基於棧的,而Dalvik虛擬機器則是基於暫存器的。一般來說,基於暫存器的虛擬機器具有更好的效能表現,但在硬體通用上略差

應用框架層

Android應用程式框架層提供了大量的API供開發者使用,在開發Android應用程式時,就是面向底層的應用程式框架進行的

應用程式框架層除可作為應用程式開發的基礎之外,也是軟體複用的重要手段任何一個應用程式都可釋出它的功能模組——只要釋出時遵守了框架的約定,那麼其它應用程式也可使用這個功能模組。

應用層

所有安裝在手機上的應用程式都屬於這一層。

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

android software stack

參考《瘋狂Android講義》《第一行程式碼——Android》