android平臺架構

本文轉自:https://www.niwoxuexi.com/blog/android00/article/209.html

Android 是一種基於 Linux 的開放源代碼軟件棧,爲廣泛的設備和機型而創建。下圖所示爲 Android 平臺的主要組件。

圖 1. Android 軟件棧。

Linux 內核


Android 平臺的基礎是 Linux 內核。例如,Android Runtime (ART) 依靠 Linux 內核來執行底層功能,例如線程和低層內存管理。

使用 Linux 內核可讓 Android 利用主要安全功能,並且允許設備製造商爲著名的內核開發硬件驅動程序。


硬件抽象層 (HAL)


硬件抽象層 (HAL) 提供標準界面,向更高級別的 Java API 框架顯示設備硬件功能。HAL 包含多個庫模塊,其中每個模塊都爲特定類型的硬件組件實現一個界面,例如相機藍牙模塊。當框架 API 要求訪問設備硬件時,Android 系統將爲該硬件組件加載庫模塊。


Android Runtime


對於運行 Android 5.0(API 級別 21)或更高版本的設備,每個應用都在其自己的進程中運行,並且有其自己的 Android Runtime (ART)實例。ART 編寫爲通過執行 DEX 文件在低內存設備上運行多個虛擬機,DEX 文件是一種專爲 Android 設計的字節碼格式,經過優化,使用的內存很少。編譯工具鏈(例如 Jack)將 Java 源代碼編譯爲 DEX 字節碼,使其可在 Android 平臺上運行。

ART 的部分主要功能包括:

1,預先 (AOT) 和即時 (JIT) 編譯

2,優化的垃圾回收 (GC

3,更好的調試支持,包括專用採樣分析器、詳細的診斷異常和崩潰報告,並且能夠設置監視點以監控特定字段

在 Android 版本 5.0(API 級別 21)之前,Dalvik 是 Android Runtime。如果您的應用在 ART 上運行效果很好,那麼它應該也可在 Dalvik 上運行,但反過來不一定。Android 還包含一套核心運行時庫,可提供 Java API 框架使用的 Java 編程語言大部分功能,包括一些 Java 8 語言功能。


原生 C/C++ 庫


許多核心 Android 系統組件和服務(例如 ART 和 HAL)構建自原生代碼,需要以 C 和 C++ 編寫的原生庫。Android 平臺提供 Java 框架 API 以嚮應用顯示其中部分原生庫的功能。例如,您可以通過 Android 框架的 Java OpenGL API 訪問 OpenGL ES,以支持在應用中繪製和操作 2D 和 3D 圖形。

如果開發的是需要 C 或 C++ 代碼的應用,可以使用 Android NDK 直接從原生代碼訪問某些原生平臺庫。


Java API 框架


您可通過以 Java 語言編寫的 API 使用 Android OS 的整個功能集。這些 API 形成創建 Android 應用所需的構建塊,它們可簡化核心模塊化系統組件和服務的重複使用,包括以下組件和服務:

  • 1,豐富、可擴展的視圖系統,可用以構建應用的 UI,包括列表、網格、文本框、按鈕甚至可嵌入的網絡瀏覽器
  • 2,資源管理器,用於訪問非代碼資源,例如本地化的字符串、圖形和佈局文件
  • 3,通知管理器,可讓所有應用在狀態欄中顯示自定義提醒
  • 4,Activity 管理器,用於管理應用的生命週期,提供常見的導航返回棧
  • 5,內容提供程序,可讓應用訪問其他應用(例如“聯繫人”應用)中的數據或者共享其自己的數據開發者可以完全訪問 Android 系統應用使用的框架 API。


系統應用


Android 隨附一套用於電子郵件、短信、日曆、互聯網瀏覽和聯繫人等的核心應用。平臺隨附的應用與用戶可以選擇安裝的應用一樣,沒有特殊狀態。因此第三方應用可成爲用戶的默認網絡瀏覽器、短信 Messenger 甚至默認鍵盤(有一些例外,例如系統的“設置”應用)。

系統應用可用作用戶的應用,以及提供開發者可從其自己的應用訪問的主要功能。例如,如果您的應用要發短信,您無需自己構建該功能,可以改爲調用已安裝的短信應用向您指定的接收者發送消息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章