Android系統(tǒng)架構(gòu)
| 類別 | 包含的基本內(nèi)容 | 更多內(nèi)容 |
|---|---|---|
| 應(yīng)用層 | Email,Calendar,Camera,開發(fā)者開發(fā)的App等等 | |
| 應(yīng)用框架層(Java Framework API) | Content Provider,View System | Activity,location,Package,Notification,Resource,TelePhony,Window |
| 系統(tǒng)運行庫(C/C++libs和Android 運行時) | Sqlite,LibC,MediaFramework,OpenGL | Android RunTime, ART,Core Libs |
| 硬件抽象層(HAL) | Audio,BlueTooth,Camera,Sensors | |
| Linux內(nèi)核 | Drivers,Power Manager | Aodio,Bindler(IPC),Display,KeyPad,BlueTooth,Camera,ShareMemory,USB,WIFI |
Android的系統(tǒng)架構(gòu)分為五層,分別是應(yīng)用層(system app),應(yīng)用框架層(java api framework),運行時庫(runtime libs 和 C/C++ libs),硬件抽象層(HAL),linux內(nèi)核
1,system app
內(nèi)置的應(yīng)用和開發(fā)者開發(fā)的應(yīng)用都屬于應(yīng)用層。負(fù)責(zé)和用戶進(jìn)行交互,通常由Java來開發(fā)
2,java api framework
為開發(fā)者提供開發(fā)所需要的API。我們平常開發(fā)應(yīng)用調(diào)用的都是這一層的API,當(dāng)然也包括系統(tǒng)應(yīng)用
| 名稱 | 功能描述 |
|---|---|
| Activity Manager(活動管理器) | 管理各個應(yīng)用程序的生命周期,以及常用的導(dǎo)航會退功能 |
| Location Manager(位置管理器) | 提供地理位置及定位功能 |
| Package Manager(包管理器) | 管理所有安裝在Android系統(tǒng)上的應(yīng)用程序 |
| Notification Manager(通知管理器) | 使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息 |
| Resource Manager(資源管理器) | 提供應(yīng)用程序使用的各種非代碼資源,如本地化字符串,圖片,布局文件,顏色文件等 |
| Telephony Manager(電話管理器) | 管理所有的移動設(shè)備功能 |
| Window Manager | 管理所有開啟的窗口程序 |
| Content Provider | 使得不同應(yīng)用程序之間可以共享數(shù)據(jù) |
| View System(視圖系統(tǒng)) | 構(gòu)建應(yīng)用程序的基本組件 |
3,系統(tǒng)運行庫(native)
從最開始的表格可以看出,系統(tǒng)運行庫分為倆個部分,分別是C/C++程序庫和Android RunTime庫
- C/C++程序庫 能夠被Android系統(tǒng)的各個組件所使用,并通過應(yīng)用程序框架為開發(fā)者提供服務(wù),
| 名稱 | 功能描述 |
|---|---|
| Open GL ES | 3D繪圖函數(shù)庫 |
| Libc | 從BSD繼承來的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫,專門為嵌入式Linux的設(shè)備定制 |
| Media Framework | 多媒體褲,支持常用的音頻和視頻的錄制和回放 |
| Sqlite | 輕型的關(guān)系型數(shù)據(jù)庫引擎 |
| SGL | 底層的2D圖像渲染引擎 |
| SSL | 安全套接層,是一種網(wǎng)絡(luò)通信提供的安全及數(shù)據(jù)完整性的安全協(xié)議 |
| FreeType | 可移植的字體引擎,它提供統(tǒng)一的接口來訪問多種字體格式文件 |
- Android運行時庫
運行時庫又分為核心庫和ART(Android 5.0之后Dalvik虛擬機被ART代替)虛擬機。
核心庫提供了Java語言核心庫的大多數(shù)功能,這樣開發(fā)者可以使用Java語言編寫應(yīng)用程序
ART和Dalvik VM都是專門為移動設(shè)備定制的虛擬機。它們允許在有限的內(nèi)存里運行多個虛擬機實例,并且每個Dalvik應(yīng)用都作為一個單獨的Linux進(jìn)程執(zhí)行,獨立的進(jìn)程可以防止在虛擬機奔潰的時候,所有的應(yīng)用程序都被關(guān)閉
ART虛擬機效率高的原因是每次安裝應(yīng)用程序的時候,AOT編譯器都會進(jìn)行一次預(yù)編譯,將字節(jié)碼編譯成機器碼并保存在本地,這樣運行程序的時候就不需要執(zhí)行編譯,運行效率也大大提高
4,硬件抽象層(HAL)
隱藏特定廠商硬件接口細(xì)節(jié),為操作系統(tǒng)提供虛擬硬件平臺,使其具有與硬件無關(guān)性,為操作系統(tǒng)提供虛擬的硬件平臺
5,Linux 內(nèi)核
Android的核心服務(wù)基于Linux內(nèi)核,在此基礎(chǔ)上添加了部分Android專用的驅(qū)動,系統(tǒng)的安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型等都依賴于內(nèi)核