Android 9 以上版本支援建構作業
product
分區使用 Android 建構系統。先前
Android 8.x 已強制執行分隔 SoC 專用元件
從 system
分區到 vendor
也沒有專供 OEM 專用元件使用
Android 建構系統Android 9 以上版本
權限
和許可清單功能適用於不同分區的應用程式。
產品劃分簡介
許多原始設備製造商 (OEM) 會自訂 AOSP 系統映像檔,以實作自身的功能。
以及電信業者規定然而,這類自訂功能
無法將單一系統映像檔用於多個軟體 SKU。每項
為支援自訂功能,
不同的語言代碼或電信業者使用
並包含自訂的 product
分區
多個軟體 SKU 使用單一系統映像檔。(
system
分區託管的泛型程式碼可由以下項目共用
軟體 SKU)。「vendor
」分區仍會繼續託管
可由多個 SoC 共用的 SoC 專屬 BSP 代碼
根據指定 SoC 分類的裝置
使用獨立分區有一些缺點,例如
管理磁碟空間 (保留有限空間供日後使用)
成長) 並維護
在分區之間建立穩定的應用程式二進位檔介面 (ABI)。之前
決定使用 product
個分區時,請花點時間
專屬的 Android 開放原始碼計畫實作和可能的緩解策略 (例如
在無線更新期間將裝置重新分割
(OTA) 更新,此功能是由部分原始設備製造商 (OEM) 執行,並非由 Google 執行。
動態分區是
有一個不錯的解決方案
產品劃分和權限
在 Android 9 以上版本中,權限有所變更
和加入許可清單的程序會影響您授予
您的 `product` 分區。permissions.xml
檔案
必須與私人應用程式位於相同的分區。在
system
分區中的 permissions.xml
個檔案
一般應用程式不會將這些權限擴展至 product
中的常用應用程式
分區。
如要進一步瞭解權限和加入許可清單程序,請參閱
將特殊權限加入許可清單。
舊版 /oem 與 /產品
product
分區有兩種屬性,具體取決於
產品上
強制使用介面。此外,product
分區是
舊版 oem
分區:
分區 | 屬性 |
---|---|
oem |
|
product |
|
product (強制執行的介面) |
|
基於這些原因,Android 9 支援 product
分區,
但保留對舊版 oem
分區的支援
基礎架構若要從 system
中分離 product
分區
因此,Android 11 支援多個分區
強制執行 product
介面。
/產品元件
product
分區包含下列元件:
- 產品專屬的系統屬性 (
/product/build.prop
) - 產品專屬的 RRO (
/product/overlay/*.apk
) - 產品專屬應用程式 (
/product/app/*.apk
) - 產品專屬的應用程式 (
/product/priv-app/*.apk
) - 產品專屬的程式庫 (
/product/lib/*
) - 產品專屬的 Java 程式庫 (
/product/framework/*.jar
) - 產品專屬的 Android 架構系統設定
(
/product/etc/sysconfig/*
和/product/etc/permissions/*
) - 產品專屬的媒體檔案 (
/product/media/audio/*
) - 產品專屬的
bootanimation
檔案
沒有 custom_images
您無法使用 custom_images
。他們不支援
包括:
- 將模組安裝到特定目標中。
custom_images
支援將構件複製到映像檔, 無法透過指定目標,將模組安裝到特定分區 做為建構規則的一部分 - Soong 支援。「
custom_images
」無法 我們運用 Soong 建構系統建構而成 - OTA 更新支援。「
custom_images
」已做為原廠 ROM 使用 就無法接收 OTA 更新的映像檔。
維護不同分區之間的 ABI
Android 9 中的 product
分區是
system
個分區。介於 ABI 之間
product
和 system
分區,因此兩者都必須
且 ABI 應以系統 SDK 為基礎。如果
系統 SDK 並未涵蓋 product
到
system
,原始設備製造商 (OEM) 必須在
這兩個分區
product
和 system
分區可以有
依附元件不過,請使用
通用系統映像檔 (GSI)
必須在沒有 product
分區的情況下正常運作。
強制執行 product
介面時,product
分區與 system
分區分離。product
分區只會使用 system
分區中允許的介面。
product
分區不得透過非穩定介面的任何依附元件
vendor
個分區。在
禁止使用「product
」和「vendor
」分區。
(由 SEpolicy 強制執行)。
導入產品劃分
導入新產品劃分前,請先詳閱
相關
Android 開放原始碼計畫的產品劃分變更。接著如要設定 product
,請按照下列步驟操作:
包含下列 Jamboard 或產品建構旗標:
BOARD_USES_PRODUCTIMAGE
BOARD_PRODUCTIMAGE_PARTITION_SIZE
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
/product/build.prop
的PRODUCT_PRODUCT_PROPERTIES
。 它們必須位於$(call inherit-product path/to/device.mk)
內 與PRODUCT_PRODUCT_PROPERTIES += product.abc=ok
相同。
將模組安裝至產品分區
使用下列建構旗標將模組安裝至 product
分區。
Android.bp
的product_specific: true
Android.mk
的LOCAL_PRODUCT_MODULE := true
啟用驗證開機程序
如何防止 product
分區遭到
惡意軟體, 啟用
Android
該分區的驗證開機程序 (AVB) (如同
vendor
和 system
分區)。如要啟用 AVB,
包含下列建構旗標:
BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS
。