A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release anziché aosp-main per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Questa pagina descrive il layout della directory per i dispositivi con Android 8.0 e versioni successive, le regole VNDK e il file sepolicy associato.
Layout della directory
Il layout degenere della directory è costituito dalle seguenti directory:
/system/lib[64] contiene tutte le librerie condivise del framework, tra cui LL-NDK, VNDK e librerie solo per il framework (tra cui LL-NDK-Private e alcune librerie con gli stessi nomi di quelle in VNDK-SP).
/system/lib[64]/vndk-sp contiene librerie VNDK-SP per HAL nello stesso processo.
/vendor/lib[64] contiene le librerie VNDK estese dal fornitore (librerie VNDK DXUA o DXUX), le implementazioni HAL nello stesso processo e altre librerie condivise del fornitore.
/vendor/lib[64]/vndk-sp potrebbe contenere le librerie VNDK-SP estese dal fornitore.
I moduli del fornitore caricano le librerie VNDK da /system/lib[64].
Regole VNDK
Questa sezione fornisce un elenco completo delle regole VNDK:
I processi del framework non devono caricare librerie condivise non SP-HAL dalle partizioni del fornitore (disposizione applicata rigorosamente a partire da Android 8.1).
I processi del fornitore non devono caricare librerie non LL-NDK, non VNDK-SP e non VNDK dalla partizione di sistema. (non applicata rigorosamente in Android
O, ma lo sarà in una release futura).
Le librerie VNDK installate devono essere un sottoinsieme di librerie VNDK idonee definite da Google.
Le dipendenze esterne di SP-HAL e SP-HAL-Dep devono essere limitate alle librerie VNDK-SP o LL-NDK definite da Google.
Le dipendenze di una libreria condivisa SP-HAL devono essere limitate alle librerie LL-NDK, alle librerie VNDK-SP definite da Google, ad altre librerie SP-HAL e/o ad altre librerie condivise del fornitore che possono essere etichettate come librerie SP-HAL-Dep.
Una libreria condivisa del fornitore può essere etichettata come libreria SP-HAL-Dep solo se non è una libreria AOSP e le sue dipendenze sono limitate alle librerie LL-NDK, alle librerie VNDK-SP definite da Google, alle librerie SP-HAL e/o ad altre librerie SP-HAL-Dep.
VNDK-SP deve essere autonomo. libRS_internal.so riceve un trattamento speciale in Android 8.0, ma verrà rivisto in una release futura.
Nessuna comunicazione tra il framework e il fornitore tramite interfacce non HIDL, inclusi, a titolo esemplificativo, binder, socket, memorie condivise, file e così via.
La dimensione della partizione di sistema deve essere sufficientemente grande da contenere due copie di tutte le librerie VNDK idonee e una copia delle librerie condivise del framework non idonee.
sepolicy
I processi del framework descritti in questa sezione corrispondono a
coredomain in sepolicies, mentre i processi del fornitore corrispondono a
non-coredomain. Ad esempio, è possibile accedere a /dev/binder solo in coredomain e a /dev/vndbinder solo in non-coredomain.
Criteri simili limitano l'accesso alle librerie condivise nelle partizioni di sistema e del fornitore. La seguente tabella mostra i diritti di accesso alle librerie condivise di diverse categorie:
Categoria
Partizione
Accessibile da coredomain
Accessibile da non-coredomain
LL-NDK
Sistema
Y
Y
LL-NDK-Private
Sistema
Y
Y
VNDK-SP/VNDK-SP-Private
Sistema
Y
Y
VNDK-SP-Ext
Fornitore
Y
Y
VNDK
Sistema
Y
Y
VNDK-Ext
Fornitore
N
Y
SOLO FWK
Sistema
Y
N
FWK-ONLY-RS
Sistema
Y
N
SP-HAL
Fornitore
Y
Y
SP-HAL-Dep
Fornitore
Y
Y
SOLO VND
Fornitore
N
Y
LL-NDK-Private e VNDK-SP-Private devono essere accessibili da entrambi i domini perché non-coredomain vi accederà indirettamente. Analogamente, SP-HAL-Dep deve essere accessibile dacoredomain perché SP-HAL si basa su questo.
Etichetta same_process_hal_file
Nella partizione del fornitore sono presenti le seguenti librerie. Rendi queste librerie accessibili sia da coredomain sia da non coredomain.
VNDK-SP-Ext in /vendor/lib[64]/vndk-sp
SP-HAL in /vendor/lib[64] o /vendor/lib[64]/hw
SP-HAL-Dep in /vendor/lib[64] o /vendor/lib[64]/hw
Etichetta esplicitamente questi file come same_process_hal_file, perché per impostazione predefinita qualsiasi elemento nella partizione vendor non è accessibile a coredomain. Aggiungi righe simili alle seguenti al file file_contexts specifico del fornitore.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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```"]]