目? ?錄
Android 系統架構圖
?1. 應用
2. JAVA API 框架
3.?原生 C/C++ 庫
4. Android 運行時(Android Runtime)
5. 硬件抽象層 (HAL)
6.?Linux 內核
參考資料
Android 系統架構圖
? ? Android底層內核空間以Linux Kernel作為基石,上層用戶空間由Native系統庫、Android運行時、JAVA API框架和應用組成,通過系統調用(Syscall)連通系統的內核空間與用戶空間。對于用戶空間主要采用C++和Java代碼編寫,通過JNI技術打通用戶空間的Java層和Native層(C++/C),從而連通整個系統。下圖所示為Android系統架構。

?1. 應用
? ? ? ?應用程序是 android 架構的頂層,包含在Android設備上運行的所有應用(包括系統應用和第三方應用),它們是Android系統中直接面向用戶的部分。
? ? ? ? 第三方應用都是基于Android提供的SDK(Sofware Development Kit)開發,并受到 SDK接口的約束。系統應用則可以調用整個框架層的接口和模塊,其中的很多接口在 SDK 中是隱藏的,因此系統應用具有比第三方應用更多的權利。
2. JAVA API 框架
? ? ? ? Java API 框架是指構建應用所依據的一組 Java 類、接口和其他預編譯代碼,是 Android 的核心部分,為開發人員提供構建應用程序所需的工具和服務。
? ? ? ? 框架層包括幾項重要的服務,可以更輕松地構建功能強大且一致的 Android 應用程序,而無需從頭開始創建所有內容。服務如下表所示。
關鍵組件 | 功能 |
---|---|
Activity Manager (AM) | 管理應用生命周期、任務棧、Activity 切換 |
Window Manager (WM) | 管理應用界面窗口、布局和繪制 |
Content Provider (CP) | 數據訪問接口,實現不同應用間的數據共享 |
Notification Manager | 管理通知欄消息 |
Resource Manager | 管理資源文件,如圖片、布局、字符串 |
Package Manager (PM) | 管理安裝的應用包、權限信息 |
Telephony Manager / Location Manager | 提供電話、定位等硬件功能訪問 |
View 系統 / UI 組件 | 提供 Button、TextView、RecyclerView 等界面元素 |
其他系統服務 | SensorManager、MediaPlayer、ClipboardManager 等 |
3.?原生 C/C++ 庫
? ? ? ?Native系統庫主要基于C\C++實現的一些原生組件,開發者需要通過 Java API 框架層調用這些庫。
庫名稱 | 功能描述 |
---|---|
OpenGL ES | 用于 2D 和 3D 圖形渲染,提供高性能的圖形處理能力,直接與 GPU 交互,可實現復雜圖形效果。 |
Media Framework | 基于 PacketVideo OpenCORE,支持多種常用音頻、視頻格式的回放和錄制,以及靜態圖像文件的處理。 |
SQLite | 一個輕量級的關系型數據庫引擎,為所有應用程序提供數據存儲和管理功能。 |
Surface Manager | 對顯示子系統進行管理,為多個應用程序提供 2D 和 3D 圖層的無縫融合。 |
Libc | 標準 C 系統函數庫,專門為嵌入式 Linux 設備定制,提供基礎的系統調用和功能支持。 |
OpenMAX AL | 一個多媒體應用程序的標準框架,用于構建和管理多媒體應用程序。 |
Webkit | 用于 WebView 的功能實現,支持網頁瀏覽和渲染。 |
4. Android 運行時(Android Runtime)
? ? ? ? Android 運行時主要包括以下兩個關鍵部分:
- 核心庫(Core Libraries):提供了一系列的 Java 和 Kotlin 標準庫,是 Android 應用開發的基礎。
- 運行時環境(ART):負責運行Android應用程序。
從 Android 5.0(Lollipop)開始,Android 運行時默認使用 ART(Android Runtime),取代早期的 Dalvik 虛擬機。Dalvik 虛擬機采用 JIT(Just-In-Time)的解釋器在程序運行時進行編譯,而ART 通過預先編譯(Ahead-Of-Time, AOT)應用程序代碼為機器代碼,顯著提高了應用程序的運行效率,但同時ART需要更多的存儲空間。
5. 硬件抽象層 (HAL)
? ? ? 硬件抽象層(Hardware Abstraction Layer,HAL)主要提供對Linux內核驅動的封裝,這種封裝可以向上提供各種設備的編程接口,并且隱藏底層實現細節。HAL 讓 Android 無需關注較低級別的驅動程序實現,當框架API請求訪問設備硬件時,Android系統將為該硬件加載相應的庫模塊。
6.?Linux 內核
? ? ? ?Android系統基于Linux內核實現,同時在該基礎上添加了Android專用的驅動,例如:Binder。由于Linux系統的優秀性,基于Linux在安全性、內存管理、進程管理等都有了很大優勢。
Linux內核提供安全性、內存管理、進程管理、網絡協議棧和驅動模型等核心系統服務,同時也是系統硬件和軟件疊層之間的抽象層。
參考資料:
1.《Android全面分析》
2.《最強Android書:架構大剖析》
3.?架構概覽 ?|? Android Open Source Project
4. Android 架構 - GeeksforGeeks
5.《瘋狂Android講義》