Cette page décrit la disposition des répertoires pour les appareils équipés d'Android 8.0 et les règles du VNDK et la sepolicy associée.
Mise en page du répertoire
La mise en page dégénérée des répertoires comprend les éléments suivants : répertoires:
/system/lib[64]
contient toutes les bibliothèques partagées du framework. y compris les bibliothèques LL-NDK, VNDK et LL-NDK-Private et certaines bibliothèques portant les mêmes noms que dans VNDK-SP)./system/lib[64]/vndk-sp
contient les bibliothèques VNDK-SP pour HAL à processus identique./vendor/lib[64]
contient les bibliothèques VNDK étendues par le fournisseur (soit bibliothèques DXUA ou DXUX VNDK), implémentations HAL dans le même processus et autres fournisseurs bibliothèques partagées./vendor/lib[64]/vndk-sp
peut contenir les bibliothèques VNDK-SP étendues par le fournisseur.
Les modules des fournisseurs chargent les bibliothèques VNDK à partir de /system/lib[64]
.
Règles VNDK
Cette section fournit la liste complète des règles VNDK:
- Les processus du framework ne doivent pas charger de bibliothèques partagées autres que SP-HAL à partir du fournisseur partitions (application stricte à partir d'Android 8.1).
- Les processus du fournisseur ne doivent pas charger de ressources autres que LL-NDK et VNDK-SP, et non-VNDK de la partition système. (pas strictement appliquée dans Android O, mais le sera dans une prochaine version).
- Les bibliothèques VNDK installées doivent être un sous-ensemble de VNDK éligibles définis par Google bibliothèques.
- Les dépendances externes de SP-HAL et de SP-HAL-Dep doivent être limitées à
LL-NDK ou VNDK-SP définies par Google.
- Les dépendances d'une bibliothèque partagée SP-HAL doivent être limitées à LL-NDK bibliothèques, bibliothèques VNDK-SP définies par Google, autres bibliothèques SP-HAL et/ou bibliothèques partagées d'autres fournisseurs pouvant être étiquetées en tant que SP-HAL-Dep bibliothèques.
- Une bibliothèque partagée de fournisseur ne peut être désignée comme bibliothèque de dépendances SP-HAL que si elle n'est pas une bibliothèque AOSP et ses dépendances sont limitées aux bibliothèques LL-NDK, Bibliothèques VNDK-SP définies par Google, bibliothèques SP-HAL et/ou autres bibliothèques de dépendances SP-HAL bibliothèques.
- VNDK-SP doit être autonome.
libRS_internal.so
est spécial dans Android 8.0, mais seront réexaminés dans une prochaine version. - Aucune communication du framework ou du fournisseur via des interfaces non-HIDL, y compris (mais sans s'y limiter) les liaisons, les sockets, les mémoires partagées, les fichiers, etc.
- La taille de la partition système doit être suffisamment grande pour contenir deux copies. de toutes les bibliothèques VNDK éligibles et une copie du framework non éligible partagée bibliothèques.
SEpolicy
Les processus du framework décrits dans cette section correspondent
coredomain
dans sepolicies, tandis que les processus des fournisseurs correspondent à
non-coredomain
Par exemple, /dev/binder
peut être
n'est accessible que dans coredomain
et /dev/vndbinder
accessible uniquement dans des domaines autres que coredomain
.
Des règles similaires limitent l'accès aux bibliothèques partagées sur les systèmes partitions de fournisseur. Le tableau suivant indique les droits d'accès partagés bibliothèques de différentes catégories:
Catégorie | Partition | Accessible depuis le domaine principal |
Accessible depuis un autre domaine que le domaine principal |
---|---|---|---|
LL-NDK | Système | O | O |
LL-NDK-Privé | Système | O | O |
VNDK-SP/VNDK-SP-Privé | Système | O | O |
VNDK-SP-Ext | Fournisseur | O | O |
VNDK | Système | O | O |
VNDK Ext. | Fournisseur | N | O |
FWK UNIQUEMENT | Système | O | N |
FWK-UNIQUEMENT-RS | Système | O | N |
SP-HAL | Fournisseur | O | O |
Dép. SP-HAL | Fournisseur | O | O |
VND UNIQUEMENT | Fournisseur | N | O |
LL-NDK-Private et VNDK-SP-Private doivent être
accessible à partir des deux domaines, car les domaines autres que coredomain
y accéder indirectement. De même, SP-HAL-Dep doit être accessible depuis
coredomain
, car SP-HAL s'appuie dessus.
Libellé same_process_hal_file
Les bibliothèques suivantes existent dans la partition du fournisseur. Rendre ces bibliothèques accessibles à partir des deux
coredomain
et non-coredomain
.
- VNDK-SP-Ext dans
/vendor/lib[64]/vndk-sp
- SP-HAL dans
/vendor/lib[64]
ou/vendor/lib[64]/hw
- Dépendance SP-HAL dans
/vendor/lib[64]
ou/vendor/lib[64]/hw
Ajoutez explicitement le libellé same_process_hal_file
à ces fichiers, car tout
dans la partition vendor
n'est pas accessible par défaut à coredomain
. Ajouter des lignes semblables à
au fichier file_contexts
spécifique au fournisseur.
/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