Verzeichnisse, Regeln und Separierungsrichtlinien

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Auf dieser Seite werden das Verzeichnislayout für Geräte mit Android 8.0 und höher, VNDK-Regeln und die zugehörige Separationsrichtlinie 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 prozessgleiche HALs.
  • /vendor/lib[64] enthält die vom Anbieter erweiterten VNDK-Bibliotheken (entweder DXUA- oder DXUX-VNDK-Bibliotheken), HAL-Implementierungen mit demselben Prozess und andere gemeinsam genutzte Bibliotheken des Anbieters.
  • /vendor/lib[64]/vndk-sp kann die vom Hersteller 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 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. (in Android O nicht strikt durchgesetzt, aber in einer zukünftigen Version).
  • 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 andere gemeinsam genutzte Bibliotheken von Anbietern beschränkt werden, die als SP-HAL-Dep-Bibliotheken bezeichnet werden können .
    • Eine gemeinsam genutzte Bibliothek eines Anbieters kann nur dann als SP-HAL-Dep-Bibliothek bezeichnet 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 eine Sonderbehandlung in Android 8.0, wird aber in einer zukünftigen Version überarbeitet.
  • Keine Framework-Anbieter-Kommunikation über Nicht-HIDL-Schnittstellen, einschließlich (aber nicht beschränkt auf) Binder, Sockets, gemeinsam genutzte Speicher, Dateien usw.
  • Die Größe der Systempartition muss groß genug sein, um zwei Kopien aller berechtigten VNDK-Bibliotheken und eine Kopie nicht berechtigter gemeinsam genutzter Framework-Bibliotheken aufzunehmen.

Trennung

Die in diesem Abschnitt beschriebenen Framework-Prozesse entsprechen der coredomain in sepolicies, während die Anbieterprozesse der non-coredomain entsprechen. Beispielsweise kann auf /dev/binder nur in der coredomain und auf /dev/vndbinder nur in einer Nicht coredomain .

Ähnliche Richtlinien schränken den Zugriff auf die gemeinsam genutzten Bibliotheken auf System- und Herstellerpartitionen ein. Die folgende Tabelle zeigt die Rechte für den Zugriff auf gemeinsam genutzte Bibliotheken verschiedener Kategorien:

Kategorie Teilung 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-NUR-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 SP-HAL-Dep von coredomain aus zugänglich sein, 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 der coredomain als auch von der 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 der vendor zugreifen kann. Fügen Sie der herstellerspezifischen file_contexts -Datei 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