In Android 11 wird eine neue HAL hinzugefügt: IDumpstateDevice (Version 1.1). Diese HAL bietet neue Methoden, um Anbieterprotokolle, die in Standard-Fehlerberichten enthalten sind, genauer einzugrenzen. Außerdem können Nutzer bei Builds die Anbieterprotokollierung aktivieren und deaktivieren (standardmäßig ist sie deaktiviert). So haben OEMs mehr Kontrolle darüber, was in bestimmte Arten von Fehlerberichten aufgenommen wird.
Diese Funktion wirkt sich auf OEMs aus, wenn sie diese optionale HAL implementieren. SoCs können davon betroffen sein, je nachdem, was der OEM mit dieser HAL freigibt. Für Mobilfunkanbieter sind keine Auswirkungen zu erwarten.
Was Sie in Fehlerberichte aufnehmen, hängt davon ab, welche Informationen Sie für die Fehlerbehebung relevant finden. Im Allgemeinen gilt: Je ausführlicher, desto besser.
Beispiele und Quelle
Es gibt eine Standardimplementierung der (eingestellten) Version 1.0 von IDumpstateDevice, die ein Beispiel für die Verwendung der Dumpstate-Util-Bibliothek zeigt:
frameworks/native/cmds/dumpstate/DumpstateUtil.h
. Es gibt auch eine Cuttlefish-Implementierung der 1.1 HAL:
device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
.
Der Quellcode befindet sich hier:
- Die HAL-Dateien befinden sich unter
hardware/interfaces/dumpstate/1.1/
. - Der native Code von dumpstate, der den Inhalt des Fehlerberichts steuert, befindet sich unter
frameworks/native/cmds/dumpstate/
.
Implementierung
Implementieren Sie dazu die android.hardware.dumpstate@1.1::IDumpstateDevice
HAL-Schnittstelle. Es gibt viele mögliche DumpstateMode
-Werte, aber nicht alle werden wahrscheinlich von einem einzelnen Gerät unterstützt (z. B. WEAR für Geräte ohne Wear OS).
Die Implementierung der dumpstate HAL ist optional. Alle neuen Geräte, die mit Android 11 auf den Markt kommen, MÜSSEN IDumpstateDevice 1.1 implementieren, wenn sie die Dumpstate-HAL implementieren. Bei Geräten, auf denen IDumpstateDevice 1.0 bereits vor Android 11 implementiert wurde, sollte das Upgrade auf Version 1.1 relativ einfach möglich sein. Wir empfehlen Ihnen dringend, dies zu tun, da dadurch die Menge an irrelevanten privaten Informationen in Fehlerberichten stark reduziert wird.
Diese Funktion hängt von den Änderungen am Dump-Status des Kernels ab, die auch in Android 11 enthalten sind und sich unter frameworks/native/cmds/dumpstate
befinden.
Die Implementierung dieser HAL erfordert wahrscheinlich einige SEPolicy-Änderungen an bestimmten Systemeigenschaften, Dateien usw., damit alles ordnungsgemäß funktioniert. Außerdem ist eine Abstimmung mit den Anbietern erforderlich, um alle relevanten Informationen in Fehlerberichte aufzunehmen.
Personalisierung
Der Gerätenutzer kann die Anbieterprotokollierung über die Entwicklereinstellungen aktivieren oder deaktivieren.
Wenn die Funktion deaktiviert ist, gibt dumpstateBoard_1_1
möglicherweise weiterhin die vom OEM als erforderlich erachteten Informationen aus. Wenn die Anbieterprotokollierung deaktiviert ist, fügt IDumpstateDevice::dumpstateBoard
einem Fehlerbericht nur die wichtigsten Informationen hinzu. Wenn sie aktiviert ist, werden alle vom OEM ausgewählten Informationen eingeschlossen.
Sie können dumpstate.cpp
(das die HAL-Methoden von IDumpstateDevice aufruft) ändern, um beispielsweise das Zeitlimit für den Abschluss von dumpstateBoard
zu verlängern.
Die grundlegende Logik von dumpstate.cpp
sollte jedoch unverändert bleiben.
Für Zeitüberschreitungen kann jeder Wert festgelegt werden. Sie sollten jedoch nicht die Zeit für die Bearbeitung eines Fehlerberichts drastisch verlängern. Insbesondere ist DumpstateMode::CONNECTIVITY
sehr zeitkritisch und muss so schnell wie möglich ausgeführt werden, um alle relevanten Modem-/WLAN-/Netzwerkprotokolle zu erfassen.
Zertifizierungsstufe
Es gibt einen VTS-Test für die IDumpstateDevice-Implementierung und funktionale Unittests für die allgemeine BugreportManager
-Funktion.
Der empfohlene manuelle Testfall ist frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
.