下圖是 Android 作業系統的架構,架構包括 4 層,由上到下依次是應用程式層、應用程式框架層、核心類庫和 Linux 內核。其中,核心類庫中包含系統庫及 Android 運行環境。
圖1 Android 作業系統的架構
應用程式層
Android 裝配了一個核心應用程式集合,包括 E-mail 客戶端、SMS 短消息程序、日曆、地圖、瀏覽器、聯繫人管理程序和其他程序,所有應用程式都是用 Java 程式語言編寫的。
用戶開發的 Android 應用程式和 Android 的核心應用程式是同一層次的,它們都是基於 Android 的系統 API 構建的。
應用程式的體系結構旨在簡化組件的重用,任何應用程式都能發布它的功能且任何其他應用程式都可以使用這些功能(需要服從框架執行的安全限制),這一機制允許用戶替換組件。
開發者完全可以訪問核心應用程式所使用的 API 框架。通過提供開放的開發平臺,Android 使開發者能夠編制極其豐富和新穎的應用程式。開發者可以自由地利用設備硬體優勢訪問位置信息、運行後臺服務、設置鬧鐘、向狀態欄添加通知等。
所有的應用程式都是由一系列的服務和系統組成的,主要包括以下幾種:
Android 本地框架是由 C/C++ 實現的,包含 C/C++ 庫,以供 Android 系統的各個組件使用。這些功能通過 Android 的應用程式框架為開發者提供服務。
這裡只介紹 C/C++ 庫中的一些核心庫:
Android 包含一個核心庫的集合,該核心庫提供了 Java 程式語言核心庫的大多數功能。幾乎每一個 Android 應用程式都在自己的進程中運行,都擁有一個獨立的 Dalvik 虛擬機實例。
Dalvik 是 Google 公司自己設計的用於 Android 平臺的 Java 虛擬機。Dalvik 虛擬機是 Google 等廠商合作開發的 Android 行動裝置平臺的核心組成部分之一,它可以支持已轉換為 .dex (Dalvik Executable) 格式的 Java 應用程式的運行。
.dex 格式是專為 Dalvik 設計的一種壓縮格式,適合內存和處理器速度有限的系統。
Dalvik 經過優化,允許在有限的內存中同時運行多個虛擬機的實例,並且每一個 Dalvik 應用作為一個獨立的 Linux 進程執行。Dalvik 虛擬機依賴 Linux 內核提供基本功能,如線程和底層內存管理。
Android 基於 Linux 提供核心系統服務,例如安全、內存管理、進程管理、網絡堆棧、驅動模型。除了標準的 Linux 內核外,Android 還增加了內核的驅動程序,如Binder (IPC) 驅動、顯示驅動、輸入設備驅動、音頻系統驅動、攝像頭驅動、WiFi驅動、藍牙驅動、電源管理。
Linux 內核也作為硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層提供統一的服務。
分層的好處就是使用下層提供的服務為上層提供統一的服務,屏蔽本層及以下層的差異,當本層及以下層發生了變化時,不會影響到上層,可以說是高內聚、低耦合。