このページでは、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/vndbinder
非coredomain
でのみアクセスできます。
同様のポリシーにより、システム パーティションおよびベンダー パーティション上の共有ライブラリへのアクセスが制限されます。次の表は、さまざまなカテゴリの共有ライブラリにアクセスする権限を示しています。
カテゴリー | パーティション | からアクセス可能 コアドメイン | からアクセス可能 非コアドメイン |
---|---|---|---|
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