安卓架構

Android系統架構包含以下組件:

Android系統架構概述
圖1. Android系統架構
  • 應用程序框架。應用程序框架最常被應用程序開發人員使用。作為硬件開發人員,您應該了解開發人員 API,因為許多 API 直接映射到底層 HAL 接口,並且可以提供有關實現驅動程序的有用信息。
  • 活頁夾IPC。 Binder 進程間通信 (IPC) 機制允許應用程序框架跨越進程邊界並調用 Android 系統服務代碼。這使高級框架 API 能夠與 Android 系統服務交互。在應用程序框架級別,這種通信對開發人員是隱藏的,事情似乎“正常工作”。
  • 系統服務。系統服務是模塊化的、重點突出的組件,例如窗口管理器、搜索服務或通知管理器。應用程序框架 API 公開的功能與系統服務通信以訪問底層硬件。 Android包括兩類服務:系統(如窗口管理器和通知管理器)和媒體(服務參與播放和錄製媒體)。
  • 硬件抽象層(HAL)。 HAL 定義了一個供硬件供應商實現的標準接口,這使 Android 能夠不知道底層驅動程序的實現。使用 HAL 允許您在不影響或修改更高級別系統的情況下實現功能。 HAL 實現被打包成模塊,並在適當的時候由 Android 系統加載。有關詳細信息,請參閱硬件抽象層(HAL) 。
  • Linux內核。開發設備驅動程序類似於開發典型的 Linux 設備驅動程序。 Android使用一個版本的Linux內核中有一些特殊的添加劑,如低內存殺手(內存管理系統,是維護內存更具侵略性),喚醒鎖定(一PowerManager系統服務),活頁夾IPC驅動程序,和其他功能的重要用於移動嵌入式平台。這些添加主要用於系統功能,不影響驅動程序開發。您可以使用任何版本的內核,只要它支持所需的功能(例如 binder 驅動程序)。但是,我們建議使用最新版本的 Android 內核。有關詳細信息,請參閱編譯內核

HAL 接口定義語言(AIDL/HIDL)

安卓8.0重新設計的Android操作系統架構(被稱為高音項目),使其更容易,更快,成本更低,為廠家的設備更新到Android的新版本。在這種新架構中,HAL 接口定義語言(HIDL,發音為“hide-l”)指定了 HAL 與其用戶之間的接口,從而無需重新構建 HAL 即可替換 Android 框架。在 Android 10 中,HIDL 功能已合併到 AIDL 中。從那時起,HIDL 已被棄用,僅由尚未轉換為 AIDL 的子系統使用。

Treble 通過新的供應商接口將供應商實現(由芯片製造商編寫的特定於設備的低級軟件)與 Android 操作系統框架分開。供應商或製造商SOC建立一次的HAL並將它們放置在一個/vendor設備上的分區;的框架內,在其自己的分區中,然後可以用一個代替過空中(OTA)更新而無需重新編譯的HAL。

傳統 Android 架構與當前基於 IDL 的架構之間的區別在於供應商接口的使用:

  • 在 Android 7.x 及更早版本中,不存在正式的供應商接口,因此設備製造商必須更新大部分 Android 代碼才能將設備移至更新版本的 Android:

    圖2.傳統的Android更新環境
  • 在 Android 8.0 及更高版本中,新的穩定供應商接口提供對 Android 硬件特定部分的訪問,因此設備製造商只需更新 Android 操作系統框架即可提供新的 Android 版本,無需芯片製造商進行額外工作:

    圖3.當前的Android更新環境

所有搭載 Android 8.0 及更高版本的新設備都可以利用新架構。為了確保供應商實現的前向兼容性,賣主接口是由驗證賣方測試套件(VTS) ,這是類似於兼容性測試套件(CTS) 。您可以使用 VTS 在舊版和當前 Android 架構中自動執行 HAL 和 OS 內核測試。

架構資源

關於Android架構的詳細信息,請參見以下部分:

除了資源,在這個網站上發布的高音團隊成員高音:快速軟件更新通過在全球範圍內的活動的軟件生態系統創建均衡分佈的利益相關者。該論文對 ACM 會員免費,非會員可以購買或閱讀摘要。