前言
Android基於Google經典的四層架構,從下往上依次是Linux內核、系統運行庫層、應用程序框架層和應用程序層這四層架構。
結構圖
應用程序
系統內置的應用程序以及非系統級的應用程序都屬於應用層,負責與用戶進行直接交互,通常都是用Java和kotlin進行開發的,如聯繫人、電話、瀏覽器等。
應用程序框架
應用框架層爲開發人員提供了開發應用程序所需要的API,我們平常開發應用程序都是調用這一層所提供的API,當然也包括系統應用。這一層是由Java / kotlin代碼編寫的,可以稱爲Java/ kotlin Framework。下面來看這一層所提供的主要組件:
名稱 | 功能 |
---|---|
Activity Manager(活動管理器) | 管理各個應用程序生命週期,以及常用的導航回退功能 |
Location Manager(位置管理器) | 提供地理位置及定位功能服務 |
Notification Manager(通知管理器) | 使得應用程序可以在狀態欄中顯示自定義的提示信息 |
Resource Manager(資源管理器) | 提供應用程序使用的各種非代碼資源,如本地化字符串、圖片、佈局文件、顏色文件等 |
Telephony Manager(電話管理器) | 管理所有的移動設備功能 |
Window Manager(窗口管理器) | 管理所有開啓的窗口程序 |
Content Provider(內容提供者) | 使得不同應用程序之間可以共享數據 |
View System(視圖系統) | 構建應用程序的基本組件 |
系統運行庫
從Android系統框架圖上可以看出,系統運行庫層分爲兩部分,分別是 C/C++ 程序庫和 Android 運行時庫。
C/C++程序庫
名稱 | 功能 |
---|---|
OpenGL ES | 3D繪圖函數庫 |
Libc | 從BSD繼承來的標準C系統函數庫,專門爲基於嵌入式Linux的設備定製 |
Media Framework | 多媒體庫,支持多種常用的音頻、視頻格式錄製和回放 |
SQLite | 輕量型的關係型數據庫引擎 |
SGL | 底層的2D圖形渲染引擎 |
SSL | 安全套接層,是爲網絡通信提供安全及數據完整性的一種安全協議 |
FreeType | 可移植的字體引擎,它提供統一的接口來訪問多種字體格式文件 |
WebKit | 瀏覽器內核 |
Display manager | 顯示管理器 |
Android 運行時庫
運行時庫又分爲核心庫和ART(5.0系統之後,Dalvik虛擬機被ART取代),在Dalvik下,應用每次運行的時候,字節碼都需要通過即時編譯器轉換爲機器碼,這會拖慢應用的運行效率,而在ART 環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,使其成爲真正的本地應用。
Linux內核
Android 的核心繫統服務基於Linux 內核,在此基礎上添加了部分Android專用的驅動。系統的安全性、內存管理、進程管理、網絡協議棧和驅動模型等都依賴於該內核。