Auf dieser Seite werden das Verzeichnislayout für Geräte mit Android 8.0 und höher, die 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 reine Framework-Bibliotheken (einschließlich LL-NDK-Private und einige Bibliotheken mit denselben Namen wie die in VNDK-SP). -
/system/lib[64]/vndk-sp
enthält VNDK-SP-Bibliotheken für HALs desselben Prozesses. -
/vendor/lib[64]
enthält die vom Anbieter erweiterten VNDK-Bibliotheken (entweder DXUA- oder DXUX-VNDK-Bibliotheken), HAL-Implementierungen für den gleichen Prozess und andere gemeinsam genutzte Bibliotheken des Anbieters. -
/vendor/lib[64]/vndk-sp
kann die vom Anbieter erweiterten VNDK-SP-Bibliotheken enthalten.
Herstellermodule laden die VNDK-Bibliotheken aus /system/lib[64]
.
VNDK-Regeln
Dieser Abschnitt enthält eine umfassende Liste der VNDK-Regeln:
- Framework-Prozesse dürfen keine gemeinsam genutzten Nicht-SP-HAL-Bibliotheken von Herstellerpartitionen laden (ab Android 8.1 strikt erzwungen).
- Anbieterprozesse dürfen keine Nicht-LL-NDK-, Nicht-VNDK-SP- und Nicht-VNDK-Bibliotheken von der Systempartition laden. (In Android O nicht unbedingt erzwungen, wird aber in einer zukünftigen Version verfügbar sein).
- Installierte VNDK-Bibliotheken müssen eine Teilmenge der von Google definierten berechtigten VNDK-Bibliotheken sein.
- Die äußeren Abhängigkeiten von SP-HAL und SP-HAL-Dep müssen auf LL-NDK oder von Google definierte VNDK-SP-Bibliotheken beschränkt werden.
- 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 gemeinsam genutzte Bibliotheken anderer Anbieter 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 es sich nicht um eine AOSP-Bibliothek handelt und ihre Abhängigkeiten auf LL-NDK-Bibliotheken, von Google definierte VNDK-SP-Bibliotheken, SP-HAL-Bibliotheken und/oder beschränkt sind andere SP-HAL-Dep-Bibliotheken.
- VNDK-SP muss eigenständig sein.
libRS_internal.so
erhält in Android 8.0 eine Sonderbehandlung, wird aber in einer zukünftigen Version erneut behandelt. - Keine Kommunikation zwischen Framework und Anbieter über Nicht-HIDL-Schnittstellen, einschließlich (aber nicht beschränkt auf) Binder, Sockets, Shared Memories, Dateien usw.
- Die Größe der Systempartition muss groß genug sein, um zwei Kopien aller berechtigten VNDK-Bibliotheken und eine Kopie der nicht berechtigten gemeinsam genutzten Framework-Bibliotheken aufzunehmen.
sepolicy
Die in diesem Abschnitt beschriebenen Framework-Prozesse entsprechen coredomain
in Sepolicies, während Anbieterprozesse non-coredomain
entsprechen. Beispielsweise kann /dev/binder
nur in coredomain
und /dev/vndbinder
nur in Nicht- coredomain
zugegriffen werden.
Ähnliche Richtlinien beschränken den Zugriff auf die gemeinsam genutzten Bibliotheken auf System- und Herstellerpartitionen. Die folgende Tabelle zeigt die Rechte für den Zugriff auf gemeinsam genutzte Bibliotheken verschiedener Kategorien:
Kategorie | Partition | Erreichbar von Kerndomäne | Erreichbar von Nicht-Kerndomäne |
---|---|---|---|
LL-NDK | System | Y | Y |
LL-NDK-Privat | System | Y | Y |
VNDK-SP/VNDK-SP-Privat | System | Y | Y |
VNDK-SP-Ext | Verkäufer | Y | Y |
VNDK | System | Y | Y |
VNDK-Ext | Verkäufer | N | Y |
NUR FWK | System | Y | N |
FWK-ONLY-RS | System | Y | N |
SP-HAL | Verkäufer | Y | Y |
SP-HAL-Abt | Verkäufer | Y | Y |
NUR VND | Verkäufer | N | Y |
Auf LL-NDK-Private und VNDK-SP-Private muss von beiden Domänen aus zugegriffen werden können, da Nicht- coredomain
indirekt auf sie zugreifen. Ebenso muss auf SP-HAL-Dep von coredomain
aus zugegriffen werden können, da SP-HAL darauf angewiesen ist.
same_process_hal_file
-Label
Die folgenden Bibliotheken sind in der Herstellerpartition vorhanden. Machen Sie diese Bibliotheken sowohl von coredomain
als auch von Nicht- coredomain
aus zugänglich.
- 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
Kennzeichnen Sie diese Dateien ausdrücklich als same_process_hal_file
, da coredomain
standardmäßig nicht auf alles in vendor
Partition zugreifen kann. Fügen Sie der herstellerspezifischen Datei file_contexts
Zeilen ähnlich der folgenden hinzu.
/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