本節書摘來自異步社群《精通移動app測試實戰:技術、工具和案例》一書中的第1章,第1.2節,作者 于湧 , 王磊 , 曹向志,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
從圖1-1中我們不難發現android的系統架構采用了分層的架構,分為4個層,從高層到低層分别是應用程式層、應用程式架構層、系統運作庫層和linux核心層。那麼它們每層都是用來做什麼的呢?
1.應用程式層
應用層是用java語言編寫的運作在android平台上的程式,比如一些手機遊戲和基于手機端的應用等,如圖1-1所示,最上面的applications層。

2.應用程式架構層
應用程式架構層是編寫google釋出的核心應用時所使用的api架構,開發人員可以使用這些架構來開發自己的應用程式,這樣可以簡化程式開發的架構設計,如圖1-1所示,第二層,即application framework層,其提供的主要api架構如下。
活動管理器:主要用來管理應用程式聲明周期,并提供常用的導航退回功能。
視窗管理器:主要用來管理所有的視窗程式。
内容提供器:它可以讓一個應用通路另一個應用的資料,或共享它們自己的資料。
視圖管理器:主要用來建構應用程式,比如清單、表格、文本框及按鈕等。
通知管理器:主要用來設定在狀态欄中顯示的提示資訊。
包管理器:主要用來對android系統内的程式進行管理。
電話管理器:主要用來對聯系人及通話記錄等資訊進行管理。
資料總管:主要用來提供非代碼資源的通路,例如本地字元串、圖形及布局檔案等。
位置管理器:主要用來提供使用者的目前位置等資訊,如gprs定位。
xmpp service:xmpp服務。
3.系統運作庫層
系統運作庫層主要提供android程式運作時需要的一些類庫,這些類庫一般是使用c/c++語言編寫的。另外,該層還包含了android運作庫。如圖1-1所示,第三層,系統運作庫層中包含的主要庫如下。
libc:c語言标準庫,系統最底層的庫,c語言标準庫通過linux系統來調用。
surface manager:主要管理多個應用程式同時執行時各個程式之間的顯示與存取,并且為多個應用程式提供2d和3d圖層的無縫融合。
sqlite:關系資料庫。
opengl|es:3d效果的支援。
media framework:android系統多媒體庫,該庫支援多種常見格式的音頻、視訊的回放和錄制。
webkit:web浏覽器引擎。
sgl:2d圖形引擎庫。
ssl:位于tcp/ip協定與各種應用層協定之間,為資料通信提供支援。
freetype:位圖及矢量庫。
系統運作庫層中還包含了一個dalvik虛拟機,相對于桌面系統和伺服器系統運作的虛拟機而言,它不需要很快的cpu計算速度和大量的記憶體空間。是以,它非常适合在移動終端上使用。
4.系統核心層
android的核心系統服務基于linux 2.6核心,該核心擁有安全性、記憶體管理、程序管理、網絡協定棧和驅動模型等。同時它也作為硬體和軟體棧之間的抽象層,而android更多的是需要一些與移動裝置相關的驅動程式,比如顯示驅動、usb接口驅動、藍牙驅動、電源驅動、wi-fi驅動等,如圖1-1所示,最下面即為該層。