Android平台采用了軟體堆層(Software Stack)的架構,主要分為四個部分:
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:一個對于是以應用程式可用、功能強勁的輕型關系型資料庫引擎。
- Android運作時環境
Android包括了一個核心庫,該核心庫提供了Java程式設計語言核心庫的大多數功能。
每一個Android應用程式都在它自己的程序中運作,都擁有一個獨立的Dalvik虛拟機執行個體。Dalvik是針對同時高效地運作多個VMs實作的。Dalvik虛拟機執行.dex的Dalvik可執行檔案,該格式檔案針對最小記憶體使用做了優化。該虛拟機是基于寄存器的,所有的類都是經由Java彙編器編譯,然後通過SDK中的DX工具轉化成.dex格式由虛拟機執行。
Dalvik虛拟機依賴于Linux的一些功能,比如線程機制和底層記憶體管理機制。
4.Linux核心
Android的核心系統服務依賴于Linux核心,如安全性、記憶體管理、程序管理、網絡協定棧和驅動模型。Linux核心也同時作為硬體和軟體棧之間的硬體抽象層。