Android 平臺架構

Android是一種基于Linux的開放源代碼軟件棧,為各類設備和機型而創(chuàng)建。下圖所示為Android平臺的主要組件。


android平臺架構圖.png

從下往上分別為
1.Linux Kernel (內(nèi)核層)
Android平臺的基礎是Linux內(nèi)核。例如,Android Runtime(ART)依賴Linux內(nèi)核來執(zhí)行底層功能,例如線程和底層內(nèi)存管理。

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

3.Android Runtime (Android運行時庫)
對于運行 Android 5.0(API 級別 21)或更高版本的設備,每個應用都在其自己的進程中運行,并且有其自己的 Android Runtime (ART)實例。ART 編寫為通過執(zhí)行 DEX 文件在低內(nèi)存設備上運行多個虛擬機,DEX 文件是一種專為 Android 設計的字節(jié)碼格式,經(jīng)過優(yōu)化,使用的內(nèi)存很少。編譯工具鏈例如 Jack將 Java 源代碼編譯為 DEX 字節(jié)碼,使其可在 Android 平臺上運行。

ART 的部分主要功能包括:

  • 預先 (AOT) 和即時 (JIT) 編譯
  • 優(yōu)化的垃圾回收 (GC)
  • 在 Android 9(API 級別 28)及更高版本的系統(tǒng)中,支持將應用軟件包中的 Dalvik Executable 格式 (DEX) 文件轉(zhuǎn)換為更緊湊的機器代碼
  • 更好的調(diào)試支持,包括專用采樣分析器、詳細的診斷異常和崩潰報告,并且能夠設置觀察點以監(jiān)控特定字段

在 Android 版本 5.0(API 級別 21)之前,Dalvik 是 Android Runtime。如果您的應用在 ART 上運行效果很好,那么它應該也可在 Dalvik 上運行,但反過來不一定。

Android 還包含一套核心運行時庫,可提供 Java API 框架所使用的 Java 編程語言中的大部分功能,包括一些 Java 8 語言功能。

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

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

5.Java API Framework (Java API 框架 )
您可通過以 Java 語言編寫的 API 使用 Android OS 的整個功能集。這些 API 形成創(chuàng)建 Android 應用所需的構建塊,它們可簡化核心模塊化系統(tǒng)組件和服務的重復使用,包括以下組件和服務:

豐富、可擴展的視圖系統(tǒng),可用以構建應用的 UI,包括列表、網(wǎng)格、文本框、按鈕甚至可嵌入的網(wǎng)絡瀏覽器
資源管理器,用于訪問非代碼資源,例如本地化的字符串、圖形和布局文件
通知管理器,可讓所有應用在狀態(tài)欄中顯示自定義提醒
Activity 管理器,用于管理應用的生命周期,提供常見的導航返回棧
內(nèi)容提供程序,可讓應用訪問其他應用(例如“聯(lián)系人”應用)中的數(shù)據(jù)或者共享其自己的數(shù)據(jù)
開發(fā)者可以完全訪問 Android 系統(tǒng)應用使用的框架 API。

6.System Apps (系統(tǒng)應用)
Android 隨附一套用于電子郵件、短信、日歷、互聯(lián)網(wǎng)瀏覽和聯(lián)系人等的核心應用。平臺隨附的應用與用戶可以選擇安裝的應用一樣,沒有特殊狀態(tài)。因此第三方應用可成為用戶的默認網(wǎng)絡瀏覽器、短信 Messenger 甚至默認鍵盤(有一些例外,例如系統(tǒng)的“設置”應用)。

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

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 是一種基于 Linux 的開放源代碼軟件棧,為廣泛的設備和機型而創(chuàng)建。下圖所示為 Android ...
    zoustin閱讀 509評論 0 0
  • Android 是一種基于 Linux 的開放源代碼軟件棧,為廣泛的設備和機型而創(chuàng)建。下圖所示為 Android ...
    Spl_none閱讀 170評論 0 0
  • Android 是一種基于 Linux 的開放源代碼軟件棧,如下圖: 系統(tǒng)應用層 Android 系統(tǒng)包含一系列核...
    CZKGO閱讀 858評論 0 0
  • 【Android 平臺架構】 Android 是一種基于 Linux 的開放源代碼軟件棧,為廣泛的設備和機型而創(chuàng)建...
    Rtia閱讀 1,226評論 0 1
  • 先上圖 Android 5.0 起的平臺架構從原來的四層變成了五層,新增了一個硬件抽象層,這五層分別是Linux ...
    指鹿為碼閱讀 612評論 0 0

友情鏈接更多精彩內(nèi)容