Anbieterprotokollierung mit Begrenzung implementieren

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:

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.