ディレクトリ、ルール、sepolicy

このページでは、Android 8.0 以降を実行しているデバイスのディレクトリ レイアウト、VNDK ルール、および関連する sepolicy について説明します。

ディレクトリのレイアウト

縮退ディレクトリ レイアウトは次のディレクトリで構成されます。

  • /system/lib[64] 、LL-NDK、VNDK、およびフレームワーク専用ライブラリ (LL-NDK-Private および VNDK-SP のライブラリと同じ名前のいくつかのライブラリを含む) を含む、すべてのフレームワーク共有ライブラリが含まれています。
  • /system/lib[64]/vndk-sp同一プロセス HAL 用の VNDK-SP ライブラリが含まれています。
  • /vendor/lib[64]ベンダーによって拡張された VNDK ライブラリ (DXUA または DXUX VNDK ライブラリ)、同一プロセスの HAL 実装、およびその他のベンダー共有ライブラリが含まれています。
  • /vendor/lib[64]/vndk-spベンダーによって拡張された 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 ライブラリとしてラベル付けできる他のベンダー共有ライブラリに制限する必要があります。
    • ベンダー共有ライブラリは、AOSP ライブラリではなく、その依存関係が LL-NDK ライブラリ、Google 定義の VNDK-SP ライブラリ、SP-HAL ライブラリ、またはその両方に制限されている場合にのみ、SP-HAL-Dep ライブラリとしてラベル付けできます。他の SP-HAL-Dep ライブラリ。
  • VNDK-SP は自己完結型である必要があります。 libRS_internal.so Android 8.0 で特別な扱いを受けますが、将来のリリースで再検討される予定です。
  • バインダー、ソケット、共有メモリ、ファイルなど (ただしこれらに限定されない) 非 HIDL インターフェイスを介したフレームワークとベンダーの通信はありません。
  • システム パーティションのサイズは、対象となるすべての VNDK ライブラリのコピー 2 つと、対象外のフレームワーク共有ライブラリのコピー 1 つを含めるのに十分な大きさである必要があります。

セポリ

このセクションで説明するフレームワーク プロセスは sepolicy のcoredomainに対応し、ベンダー プロセスはnon-coredomainに対応します。たとえば、 /dev/binder coredomainでのみアクセスでき、 /dev/vndbindercoredomainでのみアクセスできます。

同様のポリシーにより、システム パーティションおよびベンダー パーティション上の共有ライブラリへのアクセスが制限されます。次の表は、さまざまなカテゴリの共有ライブラリにアクセスする権限を示しています。

カテゴリーパーティションからアクセス可能
コアドメイン
からアクセス可能
非コアドメイン
LL-NDKシステムY Y
LL-NDK-プライベートシステムY Y
VNDK-SP/VNDK-SP-プライベートシステムY Y
VNDK-SP-ExtベンダーY Y
VNDKシステムY Y
VNDK-ExtベンダーN Y
FWKのみシステムY N
FWK専用RSシステムY N
SP-HALベンダーY Y
SP-HAL-DepベンダーY Y
VND のみベンダーN Y

LL-NDK-Private と VNDK-SP-Private は、非coredomain間接的にアクセスするため、両方のドメインからアクセスできる必要があります。同様に、SP-HAL はcoredomainに依存しているため、SP-HAL-Dep にはコアドメインからアクセスできる必要があります。

same_process_hal_fileラベル

ベンダー パーティションには次のライブラリが存在します。これらのライブラリをcoredomainと非coredomainの両方からアクセスできるようにします。

  • /vendor/lib[64]/vndk-spの VNDK-SP-Ext
  • /vendor/lib[64]または/vendor/lib[64]/hwの SP-HAL
  • /vendor/lib[64]または/vendor/lib[64]/hwの SP-HAL-Dep

デフォルトでは、 vendorパーティション内のすべてのファイルがcoredomainにアクセスできないため、これらのファイルには明示的にsame_process_hal_fileというラベルを付けます。次のような行をベンダー固有の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