DebugFS in Android 12 verwenden

Geräte, die mit Android 12 mit Kernel gestartet werden Versionen, die älter als Version 5.4 sind, müssen mit dem GKI-Kernel ausgeliefert werden. Damit Partner können in UserDebug-Builds auf DebugFS zugreifen, während sie auf der GKI entwickeln Kernel-Konfiguration CONFIG_DEBUG_FS ist in der GKI defconfig aktiviert. Stellen Sie DebugFS niemals in Nutzer-Builds für Geräte bereit. die mit Android 12 auf den Markt kommt.

Fehlerbehebungs-Builds haben eine bessere Testabdeckung als Nutzer-Builds und werden während des Entwicklungszyklus getestet werden. Der folgende Plan minimiert die Unterschied zwischen den beiden Build-Typen in Bezug auf den DebugFS-Zugriff und bietet folgende Vorteile:

  • Verhindert, dass benutzerdefinierte Fehlerbehebungs-Builds versehentlich von DebugFS abhängen für neue Funktionen
  • Stellt sicher, dass alle vorhandenen Funktionen, die durch das Fehlen von DebugFS fehlerhaft sind, fehlerhaft sind zu Beginn des Entwicklungszyklus bekannt ist,

Debugfs-Zugriffe in NutzerDebug-Builds werden so kategorisiert: folgt:

  1. DebugFS-Dateiinitialisierungen während des Gerätestarts, z. B. Schreibzugriff auf eine Datei in DebugFS, um die Datenerhebung zur Fehlerbehebung zu aktivieren.
  2. Fehlerbericht erstellen: Der Dumpstate-HAL liest DebugFS-Dateien, wenn DumpstateBoard() wird von dumpstate aufgerufen. Dieses werden in den Fehlerbericht aufgenommen.
  3. Gerätespezifische Tests und Validierungen.

In der folgenden Tabelle wird beschrieben, wie jede dieser drei Kategorien die in Android 12 unterstützt werden. Das Feld gilt nur für Fehlerbehebungs-Builds, da DebugFS nicht die in Nutzer-Builds bereitgestellt werden.

Anwendungsfall Android 12-Nutzer-Debug-Build
Einmalige Initialisierung von DebugFS-Dateien beim Start. Dieser Zugriff wird nur einmal während des Bootvorgangs durchgeführt. Der Dumpstate HAL führt dies während der HAL-Initialisierung durch. Um sie zu aktivieren, init stellt DebugFS in UserDebug-Builds bereit, bevor der HAL initialisiert wird. Init ruft umount() am DebugFS auf, wenn der Start des Geräts abgeschlossen ist.
Fehlerberichterstellung: Der Dumpstate-HAL liest DebugFS-Dateien, die in den Fehlerbericht aufgenommen werden. Wird durch Dumpstate-HAL in DumpstateBoard() ausgeführt, wenn durch Dumpstate aufgerufen wird (DumpstateDevice.cpp) Das Dumpstate-Tool (Teil des Android-Frameworks) sorgt dafür, dass DebugFS Bereitstellungen während des Aufrufs an.
Gerätespezifische Tests und Validierungen ADB-Stamm und -Shell. Stellen Sie DebugFS aus der ADB-Shell bereit mit Root-Zugriff1.

1So stellen Sie DebugFS aus adb shell bereit mit Root-Zugriff haben, verwenden Sie diesen Befehl:

adb shell mount -t debugfs debugfs /sys/kernel/debug.

Erforderliche Partneraktionen

Partner müssen auf Grundlage dieser Änderungen in Geräte mit Android 12:

  • Alle Initialisierungen beim Booten von DebugFS Knoten ausführen während der Dumpstate-HAL-Initialisierung. Ein Beispiel dafür finden Sie unter DNM: Beispiel für die Initialisierung beim Booten von DebugFS-Dateien.
  • Lassen Sie den DebugFS-Zugriff während der Laufzeit nicht zu. Folgende Ausnahmen anwenden: <ph type="x-smartling-placeholder">
      </ph>
    • Fehlerberichterstellung (aus dem Dumpstate-HAL)
    • Tests und Validierung (zugänglich für adb root und shell) - Stellen Sie sicher, dass DebugFS zuerst bereitgestellt wird.)

Entwickler können die Eigenschaft „Dauerhaftes Debugging“ festlegen persist.dbg.keep_debugfs_mounted, um DebugFs im Querformat zu fixieren wird bei „userdebug“- und „eng“-Builds neu gestartet.

GTS-Compliance-Tests sorgen dafür, dass das DebugFS-Dateisystem die in Nutzer-Builds bereitgestellt werden. Mit Sepolicy-neverallow-Anweisungen wird sichergestellt, dass auf Geräten bei der Veröffentlichung unter Android 12 oder höher, werden keine nicht autorisierten Prozesse bereitgestellt. Zugriff auf DebugFs