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.
/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