從上圖中能夠看出,Android系統架構爲四層結構,從上層到下層分別是應用程序層、應用程序框架層、系統運行庫層以及Linux內核層,分別介紹以下:linux
Android平臺不單單是操做系統,也包含了許多應用程序,諸如SMS短信客戶端程序、電話撥號程序、圖片瀏覽器、Web瀏覽器等應用程序。這些應用程序都是用Java語言編寫的,而且這些應用程序都是能夠被開發人員開發的其餘應用程序所替換,這點不一樣於其餘手機操做系統固化在系統內部的系統軟件,更加靈活和個性化。android
應用程序框架層是咱們從事Android開發的基礎,不少核心應用程序也是經過這一層來實現其核心功能的,該層簡化了組件的重用,開發人員能夠直接使用其提供的組件來進行快速的應用程序開發,也能夠經過繼承而實現個性化的拓展。數據庫
管理各個應用程序生命週期以及一般的導航回退功能瀏覽器
管理全部的窗口程序安全
使得不一樣應用程序之間存取或者分享數據架構
構建應用程序的基本組件框架
使得應用程序能夠在狀態欄中顯示自定義的提示信息ide
Android系統內的程序管理函數
管理全部的移動設備功能工具
提供應用程序使用的各類非代碼資源,如本地化字符串、圖片、佈局文件、顏色文件等
提供位置服務
提供Google Talk服務
從圖中能夠看出,系統運行庫層能夠分紅兩部分,分別是系統庫和Android運行時,分別介紹以下:
系統庫是應用程序框架的支撐,是鏈接應用程序框架層與Linux內核層的重要紐帶。其主要分爲以下幾個:
Ø Surface Manager:
執行多個應用程序時候,負責管理顯示與存取操做間的互動,另外也負責2D繪圖與3D繪圖進行顯示合成。
Ø Media Framework:
多媒體庫,基於PacketVideo OpenCore;支持多種經常使用的音頻、視頻格式錄製和回放,編碼格式包括MPEG四、MP三、H.26四、AAC、ARM。
Ø SQLite:
小型的關係型數據庫引擎
Ø OpenGL|ES:
根據OpenGL ES 1.0API標準實現的3D繪圖函數庫
Ø FreeType:
提供點陣字與向量字的描繪與顯示
Ø WebKit:
一套網頁瀏覽器的軟件引擎
Ø SGL:
底層的2D圖形渲染引擎
Ø SSL:
在Andorid上通訊過程當中實現握手
Ø Libc:
從BSD繼承來的標準C系統函數庫,專門爲基於embedded linux的設備定製
Android應用程序時採用Java語言編寫,程序在Android運行時中執行,其運行時分爲核心庫和Dalvik虛擬機兩部分。
Ø 核心庫
核心庫提供了Java語言API中的大多數功能,同時也包含了Android的一些核心API,如android.os、android.net、android.media等等。
Ø Dalvik虛擬機
Android程序不一樣於J2me程序,每一個Android應用程序都有一個專有的進程,而且不是多個程序運行在一個虛擬機中,而是每一個Android程序都有一個Dalivik虛擬機的實例,並在該實例中執行。Dalvik虛擬機是一種基於寄存器的Java虛擬機,而不是傳統的基於棧的虛擬機,並進行了內存資源使用的優化以及支持多個虛擬機的特色。須要注意的是,不一樣於J2me,Android程序在虛擬機中執行的並不是編譯後的字節碼,而是經過轉換工具dx將Java字節碼轉成dex格式的中間碼。
Android是基於Linux2.6內核,其核心繫統服務如安全性、內存管理、進程管理、網路協議以及驅動模型都依賴於Linux內核。