À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release au lieu de aosp-main pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Cette page décrit la mise en page des répertoires pour les appareils équipés d'Android 8.0 ou version ultérieure, les règles VNDK et la stratégie de sécurité associée.
Mise en page de l'annuaire
La mise en page de répertoire dégénérée se compose des répertoires suivants:
/system/lib[64] contient toutes les bibliothèques partagées du framework, y compris LL-NDK, VNDK et les bibliothèques réservées au framework (y compris LL-NDK-Private et certaines bibliothèques portant le même nom que celles de VNDK-SP).
/system/lib[64]/vndk-sp contient des bibliothèques VNDK-SP pour les HAL du même processus.
/vendor/lib[64] contient les bibliothèques VNDK étendues par le fournisseur (bibliothèques VNDK DXUA ou DXUX), les implémentations HAL du même processus et d'autres bibliothèques partagées du fournisseur.
/vendor/lib[64]/vndk-sp peut contenir les bibliothèques VNDK-SP étendues par le fournisseur.
Les modules du fournisseur chargent les bibliothèques VNDK à partir de /system/lib[64].
Règles VNDK
Cette section fournit une liste complète des règles VNDK:
Les processus de framework ne doivent pas charger de bibliothèques partagées autres que SP-HAL à partir de partitions de fournisseurs (strictement appliqué à partir d'Android 8.1).
Les processus du fournisseur ne doivent pas charger de bibliothèques non LL-NDK, non VNDK-SP et non VNDK à partir de la partition système. (non appliqué strictement dans Android O, mais le sera dans une prochaine version).
Les bibliothèques VNDK installées doivent être un sous-ensemble des bibliothèques VNDK éligibles définies par Google.
Les dépendances externes de SP-HAL et SP-HAL-Dep doivent être limitées aux bibliothèques LL-NDK ou VNDK-SP définies par Google.
Les dépendances d'une bibliothèque partagée SP-HAL doivent être limitées aux bibliothèques LL-NDK, aux bibliothèques VNDK-SP définies par Google, aux autres bibliothèques SP-HAL et/ou aux autres bibliothèques partagées du fournisseur pouvant être libellées comme bibliothèques SP-HAL-Dep.
Une bibliothèque partagée du fournisseur ne peut être désignée comme une bibliothèque SP-HAL-Dep que si elle n'est pas une bibliothèque AOSP et que ses dépendances sont limitées aux bibliothèques LL-NDK, aux bibliothèques VNDK-SP définies par Google, aux bibliothèques SP-HAL et/ou à d'autres bibliothèques SP-HAL-Dep.
Le VNDK-SP doit être autonome. libRS_internal.so bénéficie d'un traitement spécial dans Android 8.0, mais sera réexaminé dans une prochaine version.
Aucune communication entre le framework et le fournisseur via des interfaces autres que 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 importante pour contenir deux copies de toutes les bibliothèques VNDK éligibles et une copie des bibliothèques partagées de framework non éligibles.
sepolicy
Les processus de framework décrits dans cette section correspondent à coredomain dans sepolicies, tandis que les processus du fournisseur correspondent à non-coredomain. Par exemple, /dev/binder n'est accessible que dans coredomain et /dev/vndbinder n'est accessible que dans un autre contexte que coredomain.
Des règles similaires limitent l'accès aux bibliothèques partagées sur les partitions système et du fournisseur. Le tableau suivant présente les droits d'accès aux bibliothèques partagées de différentes catégories:
Catégorie
Partition
Accessible depuis coredomain
Accessible depuis domaine non principal
LL-NDK
Système
O
O
LL-NDK-Private
Système
O
O
VNDK-SP/VNDK-SP-Private
Système
O
O
VNDK-SP-Ext
Fournisseur
O
O
VNDK
Système
O
O
VNDK-Ext
Fournisseur
N
O
FWK-ONLY
Système
O
N
FWK-ONLY-RS
Système
O
N
SP-HAL
Fournisseur
O
O
SP-HAL-Dep
Fournisseur
O
O
VND uniquement
Fournisseur
N
O
LL-NDK-Private et VNDK-SP-Private doivent être accessibles à partir des deux domaines, car les éléments autres que coredomain y accéderont indirectement. De même, SP-HAL-Dep doit être accessible à partir de coredomain, car SP-HAL s'y appuie.
libellé same_process_hal_file
Les bibliothèques suivantes existent dans la partition du fournisseur. Rendez ces bibliothèques accessibles à la fois depuis coredomain et non coredomain.
VNDK-SP-Ext dans /vendor/lib[64]/vndk-sp
SP-HAL dans /vendor/lib[64] ou /vendor/lib[64]/hw
SP-HAL-Dep dans /vendor/lib[64] ou /vendor/lib[64]/hw
Attribuez explicitement le libellé same_process_hal_file à ces fichiers, car tout élément de la partition vendor n'est pas accessible par défaut à coredomain. Ajoutez des lignes semblables à celles-ci au fichier file_contexts spécifique au fournisseur.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Directories, rules, and sepolicy\n\nThis page describes the directory layout for devices running Android 8.0 and\nhigher, VNDK rules, and associated sepolicy.\n\nDirectory layout\n----------------\n\nThe *Degenerated Directory Layout* consists of the following\ndirectories:\n\n- `/system/lib[64]` contains all framework shared libraries, including LL-NDK, VNDK, and framework-only libraries (including LL-NDK-Private and some libraries with the same names as the ones in VNDK-SP).\n- `/system/lib[64]/vndk-sp` contains VNDK-SP libraries for same-process HALs.\n- `/vendor/lib[64]` contains the VNDK libraries extended by the vendor (either DXUA or DXUX VNDK libraries), same-process HAL implementations, and other vendor shared libraries.\n- `/vendor/lib[64]/vndk-sp` may contain the VNDK-SP libraries extended by the vendor.\n\nVendor modules load the VNDK libraries from `/system/lib[64]`.\n\nVNDK rules\n----------\n\nThis section provides a comprehensive list of VNDK rules:\n\n- Framework processes must not load non-SP-HAL shared libraries from vendor partitions (strictly enforced starting from Android 8.1).\n- Vendor processes must not load non-LL-NDK, non-VNDK-SP, and non-VNDK libraries from the system partition. (not strictly enforced in Android O but will be in a future release).\n| **Note**: To benefit from the framework-only OTA beyond Android 8.0, this rule must not be violated in devices launched with Android 8.0.\n- Installed VNDK libraries must be a subset of Google-defined eligible VNDK libraries.\n- The outer dependencies of SP-HAL and SP-HAL-Dep must be restricted to LL-NDK or Google-defined VNDK-SP libraries.\n - The dependencies of an SP-HAL shared library must be restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, other SP-HAL libraries, and/or other vendor shared libraries that can be labeled as SP-HAL-Dep libraries.\n - A vendor shared library can be labeled as a SP-HAL-Dep library only if it is not an AOSP library and its dependencies are restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, SP-HAL libraries, and/or other SP-HAL-Dep libraries.\n- VNDK-SP must be self-contained. `libRS_internal.so` gets special treatment in Android 8.0, but will be revisited in a future release.\n- No framework-vendor communication through non-HIDL interfaces, including (but not limited to) binder, sockets, shared memories, files, etc.\n- The size of the system partition must be large enough to contain two copies of all eligible VNDK libraries and a copy of ineligible framework shared libraries.\n\nsepolicy\n--------\n\nFramework processes described in this section correspond to\n`coredomain` in sepolicies while vendor processes correspond to\n`non-coredomain`. For example, `/dev/binder` can be\naccessed only in `coredomain` and `/dev/vndbinder` can be\naccessed only in non-`coredomain`.\n\nSimilar policies restrict the access to the shared libraries on system and\nvendor partitions. The following table shows the rights to access shared\nlibraries of different categories:\n\n| Category | Partition | Accessible from coredomain | Accessible from non-coredomain |\n|-------------------------|-----------|----------------------------|--------------------------------|\n| LL-NDK | System | Y | Y |\n| LL-NDK-Private | System | Y | Y |\n| VNDK-SP/VNDK-SP-Private | System | Y | Y |\n| VNDK-SP-Ext | Vendor | Y | Y |\n| VNDK | System | Y | Y |\n| VNDK-Ext | Vendor | N | Y |\n| FWK-ONLY | System | Y | N |\n| FWK-ONLY-RS | System | Y | N |\n| SP-HAL | Vendor | Y | Y |\n| SP-HAL-Dep | Vendor | Y | Y |\n| VND-ONLY | Vendor | N | Y |\n\nLL-NDK-Private and VNDK-SP-Private must be\naccessible from both domains because non-`coredomain` will\nindirectly access them. Similarly, SP-HAL-Dep must be accessible from\n`coredomain` because SP-HAL relies on it.\n\nsame_process_hal_file label\n---------------------------\n\nThe following libraries exist in the vendor partition. Make these libraries accessible from both\n`coredomain` and non-`coredomain`.\n\n- VNDK-SP-Ext in `/vendor/lib[64]/vndk-sp`\n- SP-HAL in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n- SP-HAL-Dep in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n\nExplicitly label these files as `same_process_hal_file`, because anything\nin `vendor` partition is by default not accessible to `coredomain`. Add lines similar to\nthe following to the vendor-specific `file_contexts` file. \n\n```scdoc\n/vendor/lib(64)?/hw/libMySpHal\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/vndk-sp/libBase\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/libBaseInternal\\.so u:object_r:same_process_hal_file:s0\n```"]]