Verzeichnisse, Regeln und Richtlinien

Auf dieser Seite wird das Verzeichnislayout für Geräte mit Android 8.0 und VNDK-Regeln und zugehörige sepolicy.

Verzeichnislayout

Das Layout "DeGenerated Directory" besteht aus Folgendem: Verzeichnisse enthalten:

  • /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 einige Bibliotheken mit demselben Namen wie die in VNDK-SP.
  • /system/lib[64]/vndk-sp enthält VNDK-SP-Bibliotheken für HALs für denselben Prozess.
  • /vendor/lib[64] enthält die vom Anbieter erweiterten VNDK-Bibliotheken (entweder DXUA- oder DXUX VNDK-Bibliotheken), HAL-Implementierungen im selben Prozess und andere Anbieter gemeinsam genutzten Bibliotheken.
  • /vendor/lib[64]/vndk-sp enthält möglicherweise die VNDK-SP-Bibliotheken, die durch das Zulieferunternehmen.

Anbietermodule 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 vom Anbieter laden Partitionen (ab Android 8.1 streng erzwungen).
  • Anbieterprozesse dürfen keine Nicht-LL-NDK- und Nicht-VNDK-SP- und Nicht-VNDK-Bibliotheken von der Systempartition zu importieren. (nicht streng in Android erzwungen) O, wird aber in einer zukünftigen Version verfügbar sein.
  • Installierte VNDK-Bibliotheken müssen Teil des von Google definierten zulässigen VNDK sein Bibliotheken.
  • Die äußeren Abhängigkeiten von SP-HAL und SP-HAL-Dep müssen auf LL-NDK oder von Google definierte VNDK-SP-Bibliotheken.
    • Die Abhängigkeiten einer gemeinsam genutzten SP-HAL-Bibliothek müssen auf LL-NDK beschränkt sein Bibliotheken, von Google definierte VNDK-SP-Bibliotheken, andere SP-HAL-Bibliotheken und/oder von anderen Anbietern gemeinsam genutzte Bibliotheken, die als SP-HAL-Dep gekennzeichnet werden können Bibliotheken.
    • Eine vom Anbieter gemeinsam genutzte Bibliothek kann nur dann als SP-HAL-Dep-Bibliothek gekennzeichnet werden, wenn sie keine AOSP-Bibliothek ist und ihre Abhängigkeiten auf LL-NDK-Bibliotheken beschränkt sind, Von Google definierte VNDK-SP-Bibliotheken, SP-HAL-Bibliotheken und/oder andere SP-HAL-Dep Bibliotheken.
  • VNDK-SP muss eigenständig sein. libRS_internal.so zu Besonderem in Android 8.0 behandelt, wird aber in einer zukünftigen Version überarbeitet.
  • Keine Kommunikation zwischen Framework-Anbietern über Nicht-HIDL-Schnittstellen, einschließlich (aber nicht beschränkt auf) Binder, Sockets, gemeinsame Erinnerungen, Dateien usw.
  • Die Systempartition muss groß genug sein, um zwei Kopien aufzunehmen aller zulässigen VNDK-Bibliotheken und eine Kopie des unzulässigen Frameworks freigegeben Bibliotheken.

Sepolicy

Die in diesem Abschnitt beschriebenen Framework-Prozesse coredomain in sepolicies, während die Anbieterprozesse den non-coredomain. /dev/binder kann z. B. sein Der Zugriff ist nur in coredomain und /dev/vndbinder möglich. Zugriff nur außerhalb von coredomain.

Ähnliche Richtlinien schränken den Zugriff auf die gemeinsam genutzten Bibliotheken auf System- und Anbieterpartitionen. In der folgenden Tabelle sind die Zugriffsrechte für freigegebene verschiedenen Kategorien:

Kategorie Partition Zugriff über
coredomain
Zugänglich über eine
Domain, die keine Kerndomain ist
LL-NDK System J J
LL-NDK-Privat System J J
VNDK-SP/VNDK-SP-Privat System J J
VNDK-SP-Ext Vendor J J
VNDK (VNDK) System J J
VNDK-Ext. Vendor N J
NUR FÜR FWK 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

LL-NDK-Private und VNDK-SP-Private müssen Zugriff von beiden Domains aus, da Nutzer, die nicht zu coredomain gehören, und indirekt darauf zugreifen. Ebenso muss SP-HAL-Dep über coredomain, da SP-HAL darauf angewiesen ist.

Label für Same_process_hal_file

Die folgenden Bibliotheken sind in der Anbieterpartition vorhanden. Zugriff auf diese Bibliotheken über coredomain und keine 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

Versehen Sie diese Dateien mit dem Label same_process_hal_file, in der Partition vendor ist standardmäßig nicht für coredomain zugänglich. Fügen Sie Zeilen wie diese hinzu: Folgendes in die anbieterspezifische file_contexts-Datei einfügen:

/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