Android的平臺架構及特性

Web開發者發表於2012-03-04

  Android平臺採用了整合的策略思想,包括底層Linux作業系統、中間層的中介軟體和上層的Java應用程式。下面我把Android的特性及其架構體系結構總結一下。

一、Android的平臺特性

  Android平臺有如下特性:

  1. 應用程式框架支援元件的重用與替換。

  這樣我們可以把系統中不喜歡的應用程式刪除,安裝我們喜歡的應用程式。

  2. Dalvik虛擬機器專門為移動裝置進行了優化。

  Android應用程式將由Java編寫、編譯的類檔案通過DX工具轉換成一種字尾名為.dex的檔案來執行。Dalvik虛擬機器是基於暫存器的,相對於Java虛擬機器速度要快很多。

  3. 內部整合瀏覽器基於開源的WebKit引擎。

  有了內建的瀏覽器,這將意味著WAP應用的時代即將結束,真正的移動網際網路時代已經來臨,手機就是一臺“小電腦”,可以在網上隨意遨遊。

  4. 優化的圖形庫包括2D和3D圖形庫,3D圖形庫基於OpenGL ES 1.0。

  強大的圖形庫給遊戲開發帶來福音。在3G最為重要的的應用莫過於手機上網和手機遊戲。

  5. SQLite用作結構化的資料儲存。

  6. 多媒體支援包括常見的音訊、視訊和靜態印象檔案格式

  如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。

  7. GSM電話(依賴於硬體)。

  8. 藍芽(Bluetooth)、EDGE、3G、WiFi(依賴於硬體)。

  9. 照相機、GPS、指南針和加速度計(依賴於硬體)。

  10. 豐富的開發環境包括裝置模擬器、除錯工具、記憶體及效能分析圖表和Eclipse整合的開發環境外掛。

  Google提供了Android開發包SDK,其中包含了大量的類庫和開發工具,並且針對Eclipse的視覺化開發外掛ADT。

二、Android平臺架構


Android 作業系統的體系結構

  從上圖我們可以看出,Android作業系統的體系結構可分為4層,由上到下依次是應用程式、應用程式框架、核心類庫和Linux核心,其中第三層還包括Android執行時的環境。下面分別來講解各個部分。

  1. 程式應用

  Android 連同一個核心應用程式包一起釋出,該應用程式包包括E-mail客戶端、SMS短訊息程式、日曆、地圖、瀏覽器、聯絡人管理程式等。所有的應用程式都是用Java編寫的。

  2. 應用程式框架

  開發者完全可以訪問核心應用程式所使用的API框架。該應用程式框架架構用來簡化元件軟體的重用,任何一個應用程式都可以釋出它的功能塊並且任何其他的應用程式都可以使用其所釋出的功能塊(不過得遵循框架的安全性限制)。該應用程式重用機制使得元件可以被使用者替換。

  以下所有的應用程式都由一系列的服務和系統組成,包括:

  1)一個可擴充套件的檢視(Views)可以用來建立應用程式,包括列表(lists)、網路(grids)、文字框(text boxes)、按鈕(buttons),甚至是一個可嵌入的Web瀏覽器。

  2)內容管理器(Content Providers)使得應用程式可以訪問另一個應用程式的資料(如聯絡人資料庫),或者共享它們自己的資料。

  3)一個資源管理器(Resource Manager)提供非程式碼資源的訪問,如本地字串、圖形和分層檔案(layout files)。

  4)一個通知管理器(Notification Manager)使得應用程式可以在狀態列中顯示客戶通知資訊。

  5)一個活動類管理器(Activity Manager)用來管理應用程式生命週期並提供常用的導航回退功能。

  3. Android程式庫

  Android包括一個被Android系統中各種不同元件所使用的C/C++集庫。該庫通過Android應用程式框架為開發者提供服務。

  以下是一些主要的核心庫:

  1)系統C庫:一個從BSD繼承來的標準C系統函式庫(libc),專門為基於Embedded Linux的裝置定製。

  2)媒體庫:基於PacketVideo OpenCORE;該庫支援錄放,並且可以錄製許多流行的音訊視訊格式,還有靜態映像檔案包括MPEG4、H.264、MP3、AAC、JPG、PNG。

  3)Surface Manager:對顯示子系統的管理,並且為多個應用程式提供2D和3D圖層的無縫融合。

  4)LibWebCore:一個最新的Web瀏覽器引擎,用來支援Android瀏覽器和一個可嵌入的Web檢視。

  5)SGL:一個內建的2D圖形引擎。

  6)3D libraries:基於OpenGL ES 1.0 APIs實現;該庫可以使用硬體3D加速(如果可用)或者使用高度優化的3D軟加速。

  7)FreeType:點陣圖(bitmap)和向量(vector)字型顯示。

  8)SQLite:一個對於所以應用程式可用、功能強勁的輕型關係型資料庫引擎。

  4. Android執行庫

  Android包括了一個核心庫,該核心庫提供了Java程式語言核心庫的大多數功能。

  每一個Android應用程式都在它自己的程式中執行,都擁有一個獨立的Dalvik虛擬機器例項。Dalvik是針對同時高效地執行多個VMs實現的。Dalvik虛擬機器執行.dex的Dalvik可執行檔案,該格式檔案針對最小記憶體使用做了優化。該虛擬機器是基於暫存器的,所有的類都是經由Java彙編器編譯,然後通過SDK中的DX工具轉化成.dex格式由虛擬機器執行。

  Dalvik虛擬機器依賴於Linux的一些功能,比如執行緒機制和底層記憶體管理機制。

  5. Linux核心

  Android的核心繫統服務依賴於Linux核心,如安全性、記憶體管理、程式管理、網路協議棧和驅動模型。Linux核心也同時作為硬體和軟體棧之間的硬體抽象層。

相關文件:Google工程師多圖詳解Android架構

相關文章