Android 11 enthält eine neue HAL, IDumpstateDevice (Version 1.1). Dieser HAL stellt neue Methoden bereit, um Anbieterlogs, die in den Standardfehlerberichten enthalten sind, enger zu fassen und um es Nutzer-Builds zu ermöglichen, Anbieter-Logging zu aktivieren und zu deaktivieren (die Standardeinstellung für Nutzer-Builds ist 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. Die SoCs können betroffen sein, je nachdem, was der OEM mit diesem HAL freigibt. Auswirkungen auf Mobilfunkanbieter sind nicht 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 von Fehlerberichten 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 wahrscheinlich werden nicht alle von einem einzelnen Gerät unterstützt (z. B. WEAR für Nicht-Wear OS-Geräte).
Die Implementierung der dumpstate HAL ist optional. Alle neuen Geräte, die mit Android 11 auf den Markt gebracht werden, MÜSSEN IDumpstateDevice 1.1 implementieren, wenn sie den 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 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 unter frameworks/native/cmds/dumpstate
enthalten sind.
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 minimal erforderlich eingestuften Informationen aus. Wenn Sie die Anbieter-Logging deaktivieren, fügt IDumpstateDevice::dumpstateBoard
einem Fehlerbericht nur wichtige Informationen hinzu. Wenn Sie die Protokollierung aktivieren, werden dagegen alle Informationen hinzugefügt, die der OEM ausgewählt hat.
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 Grundlogik 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 DumpstateMode::CONNECTIVITY
ist höchst zeitsensibel 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
.