Verzeichnisse, Regeln und Sepolicy

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