Android系統學習總結之Android系統架構

Android系統學習總結

本文是基於深入理解Android++卷1來學習總結的。

Android系統架構

  1. Android共分爲四層,從上到下依次是應用層、應用框架層、系統運行庫層、Linux內核層
  2. 應用層包括了各種Android應用程序,這些應用程序是使用java語言開發,並運行在Dalvik虛擬機上(Android平臺的虛擬機)。
  3. 應用框架層是用java語言實現和開發的,開發者使用該層提供的API便可以非常方便的完成設備硬件、獲取位置信息、向狀態欄添加通知消息、設置鬧鐘等操作,而不必關心具體的底層實現機制和硬件實現方式。
  4. 應用框架層主要組件:視圖、資源管理器、通知管理器、Activity管理器
  5. 系統運行庫層:主要包含了手機操作系統平臺必備的C/C++核心庫、Dalvik虛擬機運行環境和HAL子層
  6. C/C++核心庫,系統運行庫層包含一個C/C++庫的集合,當使用Android應用框架的一些接口時。系統運行庫通過C/C++核心庫來支持對應的組件使用,使其能更好地爲Android應用開發者服務。
  7. libc(系統C庫),處於系統最底層的系統層,由Linux系統調用。
  8. MediaFramework(多媒體庫),Android系統多媒體庫,支持當前手機平臺上主流的音頻和視頻格式播放和錄製,以及靜態圖像。
  9. SGL,2D圖形引擎庫
  10. OpenGL,3D效果的支持
  11. SQLite,輕量型關係數據庫引擎,可用來增刪改查。
  12. WebKit,新式的Web瀏覽器引擎,支持當前非常流行的HTML5
  13. SSL,基於TCP/IP網絡協議,爲數據安全通信提供支持。
  14. Dalvik虛擬機的特性如下:
    a). 每一個Android應用運行在一個Dalvik虛擬機實例中,而每一個虛擬機實例都是一個獨立的進程空間。
    b). 虛擬機的線程機制、內存分配和管理、Mutex等的實現都依賴底層Linux操作系統。
    c). 所有Android應用的線程都對應一個Linux線程,因而虛擬機可以更多地使用Linux操作系統的線程調度和管理機制。
  15. Dalvik虛擬機並不是按照Java虛擬機的規範來實現,兩者並不兼容,他們之間最大的不同在於Java虛擬機運行的是Java字節碼,而Dalvik虛擬機運行的是其專有的文件格式——DEX文件。
  16. 系統運行庫層HAL,是一個位於操作系統和驅動程序之上,運行在用戶空間中的服務程序。其目的是對上層應用提供一個統一的查詢硬件設備接口。
  17. Linux內核層,Android基於LinuxKernel提供核心系統服務,如文件管理、內存管理、進程管理、網絡堆棧、驅動模型等操作系統的基本服務能力。LinuxKernel同時也作爲硬件和軟件之間的抽象層,需要一些與移動設備相關的驅動程序來支持。主要驅動如下:顯示驅動(基於Linux的幀緩衝驅動)、鍵盤驅動(輸入設備的鍵盤驅動,如Home、Menu、Return、Power等設備按鍵)、音頻驅動(常用的基於ALSA的高級Linux聲音體系驅動)、電源管理(如電池電量、充電、屏幕開啓關閉管理)、BinderIPC驅動(Android平臺上一個特殊的驅動程序、具有單獨設備訪問節點,用來提供IPC進程間的通信功能)、藍牙驅動(基於IEEE802.15.1)標準的藍牙無線傳輸技術、WiFi驅動(基於IEEE802.11標準的WIFI驅動)、照相機驅動(常用的基於Linux的照相機驅動)
  18. Init進程:Linux內核加載完畢後,會首先啓動Init進程,Init進程是系統的第一個進程。在Init進程的啓動過程中,會解析Linux的配置腳本init.rc文件。根據init.rc文件的內容,Init進程會加載Android的文件系統、創建系統目錄、初始化屬性系統、啓動Android系統重要的守護進程,這些進程包括USB守護進程、adb守護進程、vold守護進程、rild守護進程。同時也會作爲守護進程來執行修改屬性請求,重啓崩潰的進程等操作。
  19. ServiceManager:由Init進程啓動,主要作用是管理Binder服務,負責Binder服務的註冊與查找。
  20. Zygote進程,由Init啓動,負責fork出應用進程,是所有應用進程的父進程。
  21. SystemService,是Zygote進程fork出的第一個進程,也是整個Android系統的核心進程。在SystemServer中運行着Android系統大部分的Binder服務。

其他章節內容如下:

Android系統學習總結之音頻框架

Android系統學習總結之深入理解JNI

Android系統學習總結之深入理解init

Android系統學習總結之深入理解zygote

Android系統學習總結之深入理解常見類

Android系統學習總結之深入理解Binder

發佈了45 篇原創文章 · 獲贊 14 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章