Geräte, die mit Android 12 und Kernelversionen höher als Version 5.4 auf den Markt kommen, müssen mit dem GKI-Kernel ausgeliefert werden. Damit Partner bei der Entwicklung auf dem GKI-Kernel auf DebugFS
in Userdebug-Builds zugreifen können, ist die Kernelkonfiguration CONFIG_DEBUG_FS
in der GKI-Defconfig aktiviert.
DebugFS
darf in Nutzerbuilds für Geräte, die mit Android 12 ausgeliefert werden, niemals bereitgestellt werden.
Userdebug-Builds haben eine bessere Testabdeckung als User-Builds und werden während des gesamten Entwicklungszyklus intensiv getestet. Mit dem folgenden Plan werden die Unterschiede zwischen den beiden Buildtypen in Bezug auf den DebugFS
-Zugriff minimiert. Außerdem bietet er folgende Vorteile:
- Verhindert, dass Userdebug-Builds versehentlich für neue Funktionen von
DebugFS
abhängig sind - So können Sie bereits früh im Entwicklungsprozess feststellen, ob vorhandene Funktionen aufgrund des fehlenden DebugFS nicht funktionieren.
Debugfs-Zugriffe in userdebug-Builds werden folgendermaßen kategorisiert:
DebugFS
-Dateiinitialisierungen während des Startens des Geräts, z. B. Schreibzugriff auf eine Datei inDebugFS
, um die Erfassung von Debug-Daten zu aktivieren.- Generierung von Fehlerberichten: Die Dumpstate HAL liest
DebugFS
-Dateien, wennDumpstateBoard()
vondumpstate
aufgerufen wird. Diese Informationen werden Teil des Fehlerberichts. - Gerätespezifische Tests und Validierung
In der folgenden Tabelle wird beschrieben, wie diese drei Kategorien in Android 12 unterstützt werden. Hinweis: Die folgenden Informationen gelten nur für Userdebug-Builds, da DebugFS
in User-Builds nicht bereitgestellt werden kann.
Anwendungsfall | Android 12-Userdebug-Build |
---|---|
Einmalige Initialisierung von DebugFS -Dateien beim Start
Dieser Zugriff erfolgt nur einmal während des Bootens.
|
Dumpstate HAL führt dies während der HAL-Initialisierung aus. Um dies zu aktivieren, muss init DebugFS in Userdebug-Builds vor der Initialisierung des HAL bereitgestellt werden.
Init ruft umount() auf DebugFS auf, wenn das Gerät vollständig hochgefahren ist.
|
Fehlerberichterstellung: Die HAL von dumpstate liest DebugFS -Dateien, die Teil des Fehlerberichts werden.
|
Wird von der dumpstate HAL innerhalb von DumpstateBoard() ausgeführt, wenn sie von dumpstate aufgerufen wird (DumpstateDevice.cpp).
Das Dumpstate-Tool (Teil des Android-Frameworks) sorgt dafür, dass DebugFS während der Aufrufs bereitgestellt wird.
|
Gerätespezifische Tests und Validierung | Adb root und shell DebugFS über die adb-Shell mit Root-Zugriff bereitstellen1
|
1: Verwenden Sie diesen Befehl, um DebugFS
von adb shell
mit Root-Zugriff bereitzustellen:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Erforderliche Partneraktionen
Aufgrund dieser Änderungen müssen Partner auf Android 12-Geräten Folgendes beachten:
- Alle Initialisierungen von
DebugFS
-Knoten während des Starts müssen während der HAL-Initialisierung von dumpstate erfolgen. Ein Beispiel dazu finden Sie unter DNM: Beispiel für die Initialisierung vonDebugFS
-Dateien beim Start. - Lassen Sie während der Laufzeit keinen Zugriff für
DebugFS
zu. Es gelten folgende Ausnahmen:- Fehlerberichterstellung (stammt aus der Dumpstate HAL)
- Testen und Validieren (Zugriff über
adb root
undshell
– DebugFS muss zuerst bereitgestellt werden)
Entwickler können die persistente Debugeigenschaft persist.dbg.keep_debugfs_mounted
so festlegen, dass DebugFs
bei Neustarts in userdebug- und eng-Builds bereitgestellt bleibt.
Mit GTS-Compliance-Tests wird sichergestellt, dass das DebugFS
-Dateisystem nicht in Nutzerbuilds bereitgestellt wird. Mit Sepolicy-neverallow
-Anweisungen wird sichergestellt, dass auf Geräten, die mit Android 12 oder höher gestartet werden, nicht autorisierten Prozessen kein Zugriff auf DebugFs
gewährt wird.