- Android編程經典200例
- 楚無咎編著
- 1463字
- 2018-12-30 05:08:22
1.7 Android的系統架構
從軟件分層的角度看,Android平臺由應用程序、應用程序框架、Android運行時、系統庫以及Linux內核構成,如圖1-20所示。

圖1-20 Android系統框架
通過圖1-20,讀者能夠大致了解Android的系統框架,下面就對其進行一一講解。
(1)Android應用程序框架
該框架是進行Android開發的基礎,開發人員的大部分時間也是在這一層進行的,應用程序框架包含了視圖系統、活動管理器、通知管理器、內容提供者、窗口管理器、位置管理器、資源管理器、電話管理器和包管理器共9大部分,如圖1-21所示。

圖1-21 應用程序框架
應用程序框架的各部分具體功能如下所列。
● 活動管理器(Activity Manager):管理所有的應用程序生命周期,以及通常的導航返回棧。
● 窗口管理器(Window Manager):管理所有的窗口程序。
● 內容提供者(Content Provider):用來讓應用程序之間互相存取/分享數據。例如,某個應用程序可以存取聯系人應用程序內的聯系人數據。
● 視圖系統(View System):用來構建應用程序的基本組件,包含列表、網格、文本框和按鈕等。
● 包管理器(Package Manager):用來進行Android系統內的程序管理。
● 電話管理器(Telephone Manager):用來管理所有的移動設備的功能。
● 位置管理器(Location Manager):用來提供位置服務。
● 資源管理器(Resource Manager):提供各種資源讓應用程序去使用,如本地化字符串、圖片、布局文件。
● 通知管理器(Notification Manager):是應用程序可以在狀態欄應用程序中顯示警告信息。狀態欄通常在手機的頂部,如短信、語音郵件提示就會在這里出現。
提示:Android平臺的應用程序平等和應用程序無界限等特性就是由應用程序框架來保證的。
(2)Android運行時
Android運行時包括核心庫和Dalvik虛擬機兩部分,如圖1-22所示,接下來將一一介紹這兩部分。

圖1-22 Android運行時
核心庫:包括兩大部分,一部分由Java所需調用的功能函數組成,另一部分由Android的核心庫如android.os、android.net、android.media等組成。
提示:與傳統的Java程序不同的是,每一個Android應用程序都有一個自有的進程,每一個Android應用程序都是由一個自有的Dalvik虛擬機來執行的。
Dalvik虛擬機:是一種基于寄存器的Java虛擬機,其依靠轉換工具dx將Java字節碼轉換為dex格式(稱為.dex)。基于寄存器的虛擬機相對于基于棧的虛擬機的優點是,其所需資源相對較少,而且硬件實現虛擬機也會比較容易。
(3)系統庫
應用程序框架是貼近于應用程序的軟件組件服務,而更底層則是Android的函數庫,這一部分是應用程序框架的支撐,其架構如圖1-23所示。架構中各部分的具體功能如下所列。

圖1-23 系統庫
● 媒體函數庫:是以Packet Video公司的OpenCORE為基礎所發展而成的,使用這個函數庫在播放、錄制多種常見的影音格式時,非常方便。
● SurfaceManager:負責合成2D與3D繪圖之間軟件的合成。
● WebKit:這是一套網頁瀏覽器的軟件引擎。WebKit可以為Android內部自帶的瀏覽器所調用,WebKit是一個開源項目,許多瀏覽器也都是用WebKit引擎開發的,如Apple的Safari、Nokia s60手機的瀏覽器等。
● SGL:提供Android在2D繪圖方面的繪圖引擎。
● OpenGLES:Android是依據OpenGL ES1.0API標準來實現的3D繪圖函數庫,該函數庫可以用軟件方式執行也可以用硬件加速方式執行,其中3D軟件在光柵處理方面進行了高度優化。
● FreeType:該庫提供位圖、向量字的繪圖顯示。
● 媒體框架:提供了對各種音頻、視頻的支持。Android支持多種音頻、視頻、靜態圖像格式。
● SQLite:這是一套輕量級的數據庫引擎,支持關系數據庫的事務等。
● Libc:提供了一套C庫。
(4)Linux內核
采用Linux內核(如圖1-24所示)是Android平臺開放性的基礎。Android平臺中的操作系統采用了Linux 2.6版的內核,它包括了顯示驅動、攝像頭驅動、Flash內存驅動、Binder(ipc)驅動、鍵盤驅動、Wifi驅動、Audio驅動及電源管理驅動。

圖1-24 Linux內核
Linux內核層是軟件與硬件之間的橋梁,軟件開發者不必關心內核的底層實現,而只需將精力全部投入到上層軟件的開發中。而底層的工作都由Google和手機開發商來完成,如驅動的更新、新硬件驅動的編寫等。