Geräte, die mit Android 12 und höheren Kernelversionen als v5.4 gestartet werden, müssen mit dem GKI-Kernel ausgeliefert werden. Damit Partner in Userdebug-Builds auf DebugFS
zugreifen können, während sie auf dem GKI-Kernel entwickeln, ist die Kernelkonfiguration CONFIG_DEBUG_FS
in der GKI-Defconfig aktiviert. Mounten Sie DebugFS
niemals in Benutzer-Builds für Geräte, die unter Android 12 starten.
Userdebug-Builds bieten eine bessere Testabdeckung als User-Builds und werden während des gesamten Entwicklungszyklus intensiv getestet. Der folgende Plan minimiert den Unterschied zwischen den beiden Build-Typen in Bezug auf DebugFS
Zugriff und bietet folgende Vorteile:
- Verhindert, dass Userdebug-Builds versehentlich von
DebugFS
abhängig sind, um neue Funktionen zu erhalten - Stellt sicher, dass alle vorhandenen Funktionen, die durch das Fehlen von DebugFS beeinträchtigt werden, frühzeitig im Entwicklungszyklus bekannt sind
Debugfs-Zugriffe in Userdebug-Builds werden wie folgt kategorisiert:
-
DebugFS
Dateiinitialisierungen während des Gerätestarts, z. B. ein Schreibzugriff auf eine Datei inDebugFS
, um die Debug-Datenerfassung zu aktivieren. - Generierung von Fehlerberichten: Die dumpstate HAL liest
DebugFS
Dateien, wennDumpstateBoard()
vondumpstate
aufgerufen wird. Diese Informationen werden Teil des Fehlerberichts. - Gerätespezifische Prüfung und Validierung.
In der folgenden Tabelle wird beschrieben, wie jede dieser drei Kategorien in Android 12 unterstützt wird. Beachten Sie, dass das Folgende nur für Userdebug-Builds gilt, da DebugFS
nicht in Benutzerbuilds gemountet werden kann.
Anwendungsfall | Android 12 Userdebug-Build |
---|---|
Einmalige Initialisierung der DebugFS Dateien während des Startvorgangs . Dieser Zugriff erfolgt nur einmal während des Bootvorgangs. | Dumpstate HAL führt dies während der HAL-Initialisierung durch. Um dasselbe zu ermöglichen, mountet init DebugFS in Userdebug-Builds, bevor die HAL initialisiert wird. Init ruft umount() auf DebugFS auf, wenn das Gerät den Bootvorgang abgeschlossen hat. |
Generierung von Fehlerberichten : Die Dumpstate-HAL liest DebugFS Dateien, die Teil des Fehlerberichts werden. | Wird von dumpstate HAL in DumpstateBoard() durchgeführt, wenn es von dumpstate ( DumpstateDevice.cpp ) aufgerufen wird. Das Dumpstate-Tool (Teil des Android-Frameworks) stellt sicher, dass DebugFS während des Aufrufs gemountet wird. |
Gerätespezifische Prüfung und Validierung | ADB-Root und Shell. Mounten Sie DebugFS über die ADB-Shell mit Root-Zugriff 1 . |
1 Um DebugFS
von adb shell
mit Root-Zugriff bereitzustellen, verwenden Sie diesen Befehl:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Erforderliche Partneraktionen
Partner müssen basierend auf diesen Änderungen auf Android 12-Geräten Folgendes umsetzen:
- Sorgen Sie dafür, dass alle Startzeitinitialisierungen von
DebugFS
Knoten während der Dumpstate-HAL-Initialisierung erfolgen. Ein Beispiel dafür finden Sie unter DNM: Beispiel für die Bootzeitinitialisierung vonDebugFS
Dateien . - Erlauben Sie während der Laufzeit keinen
DebugFS
Zugriff. Es gelten folgende Ausnahmen:- Generierung von Fehlerberichten (kommt aus der Dumpstate-HAL)
- Testen und Validieren (zugänglich über
adb root
undshell
– stellen Sie sicher, dass DebugFS zuerst gemountet wird)
Entwickler können die persistente Debug-Eigenschaft persist.dbg.keep_debugfs_mounted
festlegen, um DebugFs
über Neustarts hinweg bei Userdebug- und Eng-Builds gemountet zu lassen.
GTS-Konformitätstests stellen sicher, dass das DebugFS
Dateisystem nicht in Benutzer-Builds gemountet wird. Sepolicy neverallow
Anweisungen stellen sicher, dass auf Geräten, die mit Android 12 oder höher gestartet werden, nicht autorisierten Prozessen kein Zugriff auf DebugFs
gewährt wird.