Ab dem 27. März 2025 empfehlen wir, android-latest-release anstelle von aosp-main zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Auf dieser Seite wird das Verzeichnislayout für Geräte mit Android 8.0 und höher, VNDK-Regeln und die zugehörige SEPolicy beschrieben.
Verzeichnislayout
Das degenerierte Verzeichnislayout besteht aus den folgenden Verzeichnissen:
/system/lib[64] enthält alle gemeinsam genutzten Framework-Bibliotheken, einschließlich LL-NDK-, VNDK- und nur Framework-Bibliotheken (einschließlich LL-NDK-Private und einiger Bibliotheken mit denselben Namen wie die in VNDK-SP).
/system/lib[64]/vndk-sp enthält VNDK-SP-Bibliotheken für HALs mit demselben Prozess.
/vendor/lib[64] enthält die vom Anbieter erweiterten VNDK-Bibliotheken (entweder DXUA- oder DXUX-VNDK-Bibliotheken), HAL-Implementierungen für denselben Prozess und andere vom Anbieter gemeinsam genutzte Bibliotheken.
/vendor/lib[64]/vndk-sp kann die vom Anbieter erweiterten VNDK-SP-Bibliotheken enthalten.
Anbietermodule laden die VNDK-Bibliotheken von /system/lib[64].
VNDK-Regeln
Dieser Abschnitt enthält eine umfassende Liste der VNDK-Regeln:
Framework-Prozesse dürfen keine nicht SP-HAL-gemeinsam genutzten Bibliotheken aus Anbieterpartitionen laden (ab Android 8.1 streng erzwungen).
Anbieterprozesse dürfen keine Nicht-LL-NDK-, Nicht-VNDK-SP- und Nicht-VNDK-Bibliotheken von der Systempartition laden. (wird in Android OS derzeit nicht strikt erzwungen, wird aber in einer zukünftigen Version eingeführt).
Die installierten VNDK-Bibliotheken müssen eine Teilmenge der von Google definierten infrage kommenden VNDK-Bibliotheken sein.
Die externen Abhängigkeiten von SP-HAL und SP-HAL-Dep müssen auf LL-NDK- oder von Google definierte VNDK-SP-Bibliotheken beschränkt sein.
Die Abhängigkeiten einer gemeinsam genutzten SP-HAL-Bibliothek müssen auf LL-NDK-Bibliotheken, von Google definierte VNDK-SP-Bibliotheken, andere SP-HAL-Bibliotheken und/oder andere gemeinsam genutzte Bibliotheken von Anbietern beschränkt sein, die als SP-HAL-Dep-Bibliotheken gekennzeichnet werden können.
Eine gemeinsam genutzte Bibliothek eines Anbieters kann nur dann als SP-HAL-Dep-Bibliothek gekennzeichnet werden, wenn sie keine AOSP-Bibliothek ist und ihre Abhängigkeiten auf LL-NDK-Bibliotheken, von Google definierte VNDK-SP-Bibliotheken, SP-HAL-Bibliotheken und/oder andere SP-HAL-Dep-Bibliotheken beschränkt sind.
VNDK-SP muss eigenständig sein. libRS_internal.so wird in Android 8.0 besonders behandelt, wird aber in einer zukünftigen Version noch einmal überarbeitet.
Keine Kommunikation zwischen Framework und Anbieter über nicht HIDL-Schnittstellen, einschließlich (aber nicht beschränkt auf) Binder, Sockets, freigegebenen Speichern, Dateien usw.
Die Größe der Systempartition muss groß genug sein, um zwei Kopien aller infrage kommenden VNDK-Bibliotheken und eine Kopie der nicht infrage kommenden freigegebenen Framework-Bibliotheken zu enthalten.
sepolicy
Die in diesem Abschnitt beschriebenen Framework-Prozesse entsprechen coredomain in sepolicies, während Anbieterprozesse non-coredomain entsprechen. Beispiel: Auf /dev/binder kann nur in coredomain zugegriffen werden und auf /dev/vndbinder nur außerhalb von coredomain.
Ähnliche Richtlinien schränken den Zugriff auf die freigegebenen Bibliotheken auf System- und Anbieterpartitionen ein. In der folgenden Tabelle sind die Zugriffsrechte für freigegebene Bibliotheken verschiedener Kategorien aufgeführt:
Kategorie
Partition
Zugänglich über coredomain
Zugänglich über eine nicht zur Kerndomain gehörende Domain
LL-NDK
System
J
J
LL-NDK-Private
System
J
J
VNDK-SP/VNDK-SP-Private
System
J
J
VNDK-SP-Ext
Vendor
J
J
VNDK
System
J
J
VNDK-Ext
Vendor
N
J
FWK-ONLY
System
J
N
FWK-ONLY-RS
System
J
N
SP-HAL
Vendor
J
J
SP-HAL-Dep
Vendor
J
J
NUR VND
Vendor
N
J
Auf LL-NDK-Private und VNDK-SP-Private muss von beiden Domains aus zugegriffen werden können, da nicht coredomain-Geräte indirekt darauf zugreifen. Ebenso muss auf SP-HAL-Dep voncoredomain aus zugegriffen werden können, da SP-HAL darauf angewiesen ist.
same_process_hal_file label
Die folgenden Bibliotheken befinden sich in der Anbieterpartition. Diese Bibliotheken müssen sowohl über coredomain als auch über nicht coredomain-Seiten zugänglich sein.
VNDK-SP-Ext in /vendor/lib[64]/vndk-sp
SP-HAL in /vendor/lib[64] oder /vendor/lib[64]/hw
SP-HAL-Dep in /vendor/lib[64] oder /vendor/lib[64]/hw
Labeln Sie diese Dateien explizit als same_process_hal_file, da auf alle Elemente in der vendor-Partition standardmäßig nicht von coredomain aus zugegriffen werden kann. Fügen Sie der anbieterspezifischen file_contexts-Datei Zeilen hinzu, die der folgenden ähneln.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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```"]]