ODM 分區

Android 10 支援建構 odm 分區使用 Android 建構系統。

關於 ODM 分區

原始設計製造商 (ODM) 可自訂晶片系統 (SoC) 供應商 開發板支援套件 (BSP) 到特定裝置 (主機板)。這個 都能為 Jamboard 專用元件實作核心模組 主機專用的 Daemon,或是硬體抽象層上的本身功能 (HAL)。他們可能也想替換或自訂 SoC 元件。

在較低的 Android 版本中,這類自訂功能導致使用者無法使用單個 廠商圖片:有相同 SoC (或具有不同 SoC,但實際上 同一個家庭)。在 Android 10 以上版本中,您可以使用 可自訂個別的 odm 分區,讓您能 為多個硬體 SKU 使用單一供應商映像檔。

使用產品和 ODM 分區

Android 9 新增建構支援功能 product 分區,在多個軟體中使用單一系統映像檔 不同 product.img 映像檔提供的 SKU。雖然 「product」分區適用於軟體 SKU 「odm」分區適用於硬體 SKU。

透過專屬產品和 ODM 分區,您可以使用 system 分區來託管用於多個軟體 SKU 共用的通用程式碼。 vendor 分區來代管要共用的 SoC 專屬 BSP 程式碼 根據指定的 SoC 來部署多部裝置

使用獨立分區存在缺點,例如管理難度 磁碟空間 (舉例來說,您必須預留一定空間供日後使用) 成長)。不過,Android 10 支援 動態分區 移除磁碟問題,並在裝置無法使用時重新分割裝置 無線更新 (OTA)

ODM 元件

odm 分區包含下列 ODM 專屬元件 (類似 vendor 分區),如下表所列。

ODM 專屬元件 位置
可載入的核心模組 (LKM) /odm/lib/modules/*.ko
原生程式庫 /odm/lib[64]
HAL /odm/lib[64]/hw
SEPolicy /odm/etc/selinux
VINTF 物件 資料 /odm/etc/vintf
init.rc 檔案 /odm/etc/init
系統屬性 /odm/build.prop
執行階段資源重疊 (RRO) /odm/overlay/*.apk
應用程式 /odm/app/*.apk
先前的應用程式 /odm/priv-app/*.apk
Java 程式庫 /odm/framework/*.jar
Android 架構系統設定 /odm/etc/sysconfig/*/odm/etc/permissions/*

沒有自訂映像檔

不使用 自訂 映像檔,則不支援下列功能:

  • 將模組安裝至特定目標。 自訂映像檔支援將構件複製到映像檔中 指定目標分區,將模組安裝到特定分區 做為建構規則的一部分
  • Soong,無法使用 custom_images 建立 Soong 建構系統
  • OTA 更新。自訂映像檔的用途 無法 OTA 更新的原廠 ROM 映像檔。

維護不同分區之間的 ABI

odm 分區是 vendor 的擴充功能 在考量應用程式二進位檔介面 (ABI) 穩定性時, 下列架構。

維護不同分區之間的 ABI

圖 1. 維護不同分區之間的 ABI。

  • odm 與 之間沒有 ABI 穩定性 vendor 個分區。兩個分區必須以相同方式升級 讓應用程式從可以最快做出回應的位置 回應使用者要求
  • odmvendor 分區可以依附 但 vendor 分區「必須」能運作 但不含 odm 分區
  • odmsystem 之間的 ABI 與 介於 vendorsystem 之間的 ABI。

product 分區與 vendorodm 分區不是 。(由 SEpolicy 強制執行)。

實作 ODM 分區

實作新的分區之前,請先詳閱 相關 Android 開放原始碼計畫 變更

設定 ODM 分區

如要設定 odm 分區,請加入以下建構標記:

  • BOARD_ODMIMAGE_PARTITION_SIZE 是固定分區大小
  • PRODUCT_USE_DYNAMIC_PARTITIONS」和 BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE動態分區 大小
  • BOARD_ODMIMAGE_FILE_SYSTEM_TYPE 檔案系統類型, ODM 圖片
  • /odm/build.propPRODUCT_ODM_PROPERTIES$(call inherit-product path/to/device.mk) 中使用,例如 PRODUCT_ODM_PROPERTIES += product.abc=ok

將模組安裝至 ODM 分區

使用下列建構旗標將模組安裝至 odm 分區:

  • Android.bpdevice_specific: true
  • Android.mkLOCAL_ODM_MODULE := true

啟用驗證開機程序

為防止惡意軟體竄改 odm 分區, 啟用 Android 驗證開機程序 (AVB)。如同您對 vendorsystem 個分區)。

如要啟用 AVB,請加入建構旗標 BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS。進一步瞭解如何設定 針對動態分區上的 AVB,請參閱 AVB 設定 變更

將 /odm 視為其他 /供應商分區

為了確保系統處理 odm 分區時, vendor 分區,取代任何硬式編碼 vendor 參照一組硬體導向的分區 (目前 odmvendor)。著名vendor 包括指定平台的 動態 連接器 套件 管理員shell/libc