本頁說明搭載 Android 8.0 和 VNDK 規則和相關相關政策
目錄版面配置
「去產生的目錄版面配置」包含下列內容 目錄:
/system/lib[64]
包含所有架構共用程式庫 包括 LL-NDK、VNDK 和架構專用程式庫 (包括 LL-NDK-Private 和一些與 VNDK-SP)。/system/lib[64]/vndk-sp
包含以下項目的 VNDK-SP 程式庫: 相同程序 HAL/vendor/lib[64]
包含供應商擴充的 VNDK 程式庫 ( DXUA 或 DXUX VNDK 程式庫、相同程序 HAL 實作和其他供應商 共用程式庫/vendor/lib[64]/vndk-sp
可能包含 供應商。
供應商模組會從 /system/lib[64]
載入 VNDK 程式庫。
VNDK 規則
本節提供完整的 VNDK 規則清單:
- 架構程序不得從供應商載入非 SP-HAL 共用程式庫 分區 (從 Android 8.1 開始嚴格強制執行)。
- 供應商程序不得載入非 LL-NDK、非 VNDK-SP,以及 從系統分區取得非 VNDK 程式庫(未在 Android 中嚴格執行 O,但日後將推出的版本)。
- 已安裝的 VNDK 程式庫必須是 Google 定義且符合資格的 VNDK 子集 程式庫
- SP-HAL 和 SP-HAL-Dep 的外部依附元件必須限制為
LL-NDK 或 Google 定義的 VNDK-SP 程式庫。
- SP-HAL 共用資料庫的依附元件必須限制為 LL-NDK 程式庫、Google 定義的 VNDK-SP 程式庫、其他 SP-HAL 程式庫,和/或 其他供應商共用程式庫 (可能標示為 SP-HAL-Dep) 程式庫
- 供應商共用資料庫只能標示為 SP-HAL-Dep 程式庫 並非 AOSP 程式庫,且其依附元件僅限 LL-NDK 程式庫。 Google 定義的 VNDK-SP 程式庫、SP-HAL 程式庫和/或其他 SP-HAL-Dep 程式庫
- VNDK-SP 必須是獨立項目。
libRS_internal.so
可享特別優惠 ,但我們會在日後的版本中重新審視。 - 非架構供應商透過非 HIDL 介面進行通訊,包括 繫結器、通訊端、共享回憶集錦和檔案等
- 系統分區的大小必須足以包含兩個複本 以及不合格的 VNDK 程式庫副本 程式庫
平等
本節所述的架構程序,會對應到
coredomain
,但供應商程序需要
non-coredomain
。舉例來說,/dev/binder
可以是
只能在 coredomain
中存取,/dev/vndbinder
的
只能在非 coredomain
中存取。
同類型的政策會限制系統和 供應商分區下表列出共用存取權 各種類別的應用程式:
類別 | 分區 | 可從核心網域 存取 |
可從非核心網域 存取 |
---|---|---|---|
LL-NDK | 系統 | 是 | 是 |
LL-NDK-私人 | 系統 | 是 | 是 |
VNDK-SP/VNDK-SP-私人 | 系統 | 是 | 是 |
VNDK-SP-Ext | 供應商 | 是 | 是 |
越南盾 | 系統 | 是 | 是 |
VNDK-Ext | 供應商 | 否 | 是 |
僅限足球 | 系統 | 是 | 否 |
僅限回覆 | 系統 | 是 | 否 |
SP-HAL | 供應商 | 是 | 是 |
SP-HAL-Dep | 供應商 | 是 | 是 |
僅限越南 | 供應商 | 否 | 是 |
LL-NDK-Private 和 VNDK-SP-Private 必須為
,因為非 coredomain
會
間接存取這些檔案同樣地,必須能夠從以下伺服器存取 SP-HAL-Dep
coredomain
,因為 SP-HAL 相當仰賴它。
same_process_hal_file 標籤
供應商分區含有下列程式庫。將程式庫設為可透過以下兩者存取:
coredomain
和非 coredomain
。
/vendor/lib[64]/vndk-sp
的 VNDK-SP-Ext- SP-HAL (
/vendor/lib[64]
或/vendor/lib[64]/hw
) - SP-HAL-Dep (
/vendor/lib[64]
或/vendor/lib[64]/hw
)
為這些檔案明確標示為 same_process_hal_file
(因為任何項目都一樣)
根據預設,coredomain
無法存取 vendor
分區。加入類似以下幾行文字:
將下列程式碼加入供應商專屬 file_contexts
檔案。
/vendor/lib(64)?/hw/libMySpHal\.so u:object_r:same_process_hal_file:s0 /vendor/lib(64)?/vndk-sp/libBase\.so u:object_r:same_process_hal_file:s0 /vendor/lib(64)?/libBaseInternal\.so u:object_r:same_process_hal_file:s0