Verzeichnisse, Regeln und Richtlinien

Diese Seite beschreibt das Verzeichnislayout für Geräte mit Android 8.0 und höher, VNDK-Regeln und die zugehörige Richtlinie.

Verzeichnislayout

Das entartete Verzeichnislayout besteht aus 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 mit demselben Prozess und andere gemeinsam genutzte Bibliotheken des Anbieters.
  • /vendor/lib[64]/vndk-sp enthält möglicherweise die vom Anbieter erweiterten VNDK-SP-Bibliotheken.

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 (strikt ab Android 8.1 erzwungen).
  • Herstellerprozesse dürfen keine Nicht-LL-NDK-, Nicht-VNDK-SP- und Nicht-VNDK-Bibliotheken von der Systempartition laden. (wird in Android O nicht strikt durchgesetzt, wird aber in einer zukünftigen Version enthalten 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 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 vom Hersteller gemeinsam genutzte Bibliothek 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 in sich geschlossen sein. libRS_internal.so wird in Android 8.0 speziell behandelt, wird aber in einer zukünftigen Version erneut verwendet.
  • Keine Kommunikation zwischen Framework und Anbieter über Nicht-HIDL-Schnittstellen, einschließlich (aber nicht beschränkt auf) Ordner, Sockets, gemeinsam genutzte Speicher, Dateien usw.
  • Die Größe der Systempartition muss groß genug sein, um zwei Kopien aller in Frage kommenden VNDK-Bibliotheken und eine Kopie der nicht in Frage kommenden gemeinsam genutzten Framework-Bibliotheken zu enthalten.

sepolicy

In diesem Abschnitt beschriebene Framework-Prozesse entsprechen in coredomain Coredomain, während Herstellerprozesse der non-coredomain . Beispielsweise kann auf /dev/binder nur in coredomain und auf /dev/vndbinder kann nur in nicht coredomain .

Ä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 Zugänglich von
coredomain
Zugänglich von
Nicht-Coredomain
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-Dep Verkäufer Y. Y.
NUR VND Verkäufer N. Y.

Auf LL-NDK-Private und VNDK-SP-Private muss von beiden Domänen aus coredomain werden können, da Nicht- coredomain indirekt auf sie zugreifen kann. Ebenso muss SP-HAL-Dep von coredomain aus coredomain 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 coredomain coredomain coredomain .

  • 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

Beschriften Sie diese Dateien explizit als same_process_hal_file , da same_process_hal_file standardmäßig nicht auf alle coredomain in der vendor coredomain . Fügen Sie der herstellerspezifischen Datei file_contexts Zeilen hinzu, die den folgenden ähnlich sind.

/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