目錄、規則和政策

本頁說明搭載 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