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) 穩定性時,
下列架構。
圖 1. 維護不同分區之間的 ABI。
odm
與 之間沒有 ABI 穩定性vendor
個分區。兩個分區必須以相同方式升級 讓應用程式從可以最快做出回應的位置 回應使用者要求odm
和vendor
分區可以依附 但vendor
分區「必須」能運作 但不含odm
分區odm
和system
之間的 ABI 與 介於vendor
和system
之間的 ABI。
與 product
分區與
vendor
或 odm
分區不是
。(由 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.prop
的PRODUCT_ODM_PROPERTIES
在$(call inherit-product path/to/device.mk)
中使用,例如PRODUCT_ODM_PROPERTIES += product.abc=ok
將模組安裝至 ODM 分區
使用下列建構旗標將模組安裝至 odm
分區:
Android.bp
的device_specific: true
Android.mk
的LOCAL_ODM_MODULE := true
啟用驗證開機程序
為防止惡意軟體竄改 odm
分區,
啟用 Android 驗證開機程序
(AVB)。如同您對 vendor
和
system
個分區)。
如要啟用 AVB,請加入建構旗標
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
。進一步瞭解如何設定
針對動態分區上的 AVB,請參閱
AVB 設定
變更。
將 /odm 視為其他 /供應商分區
為了確保系統處理 odm
分區時,
vendor
分區,取代任何硬式編碼 vendor
參照一組硬體導向的分區 (目前
odm
和 vendor
)。著名vendor
包括指定平台的
動態
連接器
套件
管理員和 shell/libc
。