Anbieterprotokollierung mit Begrenzung implementieren

In Android 11 wird ein neues HAL, IDumpstateDevice (Version 1.1), eingeführt. Dieses HAL stellt neue Methoden zur Verfügung, um Anbieterprotokolle, die in Standardfehlerberichten enthalten sind, genauer einzugrenzen und um Anbieterprotokollierung in Nutzer-Builds zu aktivieren und zu deaktivieren (die Standardeinstellung für Nutzer-Builds ist „Aus“). So haben OEMs mehr Kontrolle darüber, was in bestimmte Arten von Fehlerberichten aufgenommen wird.

Diese Funktion betrifft OEMs, wenn sie dieses optionale HAL implementieren. SoCs können betroffen sein, je nachdem, was der OEM mit diesem HAL verfügbar macht. Es sind keine Auswirkungen auf Mobilfunkanbieter zu erwarten.

Was Sie in Fehlerberichte aufnehmen, hängt davon ab, welche Informationen Sie für das Debugging als relevant erachten. Im Allgemeinen gilt jedoch: 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-Hilfsbibliothek zeigt: frameworks/native/cmds/dumpstate/DumpstateUtil.h. Es gibt auch eine Cuttlefish-Implementierung des 1.1-HAL: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.

Der Quellcode befindet sich hier:

Implementierung

Implementieren Sie die android.hardware.dumpstate@1.1::IDumpstateDevice-HAL-Schnittstelle, um diese HAL zu implementieren. 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, die nicht Wear OS verwenden).

Die Implementierung des 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. Geräte, auf denen IDumpstateDevice 1.0 bereits vor Android 11 implementiert wurde, sollten relativ einfach auf Version 1.1 aktualisiert werden können. Dies wird dringend empfohlen, da dadurch die Menge an irrelevanten privaten Informationen in Fehlerberichten erheblich reduziert wird.

Diese Funktion hängt von den Änderungen am Core-Dumpstate ab, die auch in Android 11 enthalten sind und sich unter frameworks/native/cmds/dumpstate befinden.

Die Implementierung dieses HAL erfordert wahrscheinlich einige SEPolicy-Änderungen an bestimmten Systemeigenschaften, Dateien usw., damit alles einwandfrei 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, kann dumpstateBoard_1_1 trotzdem minimale, vom OEM festgelegte Informationen ausgeben. Wenn Sie die Vendor-Protokollierung deaktivieren, werden dem Fehlerbericht nur wichtige Informationen hinzugefügt. Wenn Sie sie aktivieren, werden alle Informationen hinzugefügt, die der OEM auswählt.IDumpstateDevice::dumpstateBoard

Sie können dumpstate.cpp (die die IDumpstateDevice HAL-Methoden aufruft) ändern, um beispielsweise das Zeitlimit für den Abschluss von dumpstateBoard zu erhöhen. Die Kernlogik von dumpstate.cpp sollte jedoch unverändert bleiben.

Timeouts können einen beliebigen Wert haben, sollten aber die Zeit, die für die Erstellung eines Fehlerberichts benötigt wird, nicht erheblich verlängern. Insbesondere DumpstateMode::CONNECTIVITY ist sehr zeitkritisch und muss so schnell wie möglich ausgeführt werden, um alle relevanten Modem-, WLAN- und Netzwerkprotokolle zu erfassen.

Zertifizierungsstufe

Es gibt einen VTS-Test für die IDumpstateDevice-Implementierung und funktionale Unittests für die allgemeine BugreportManager-Funktionalität.

Der empfohlene manuelle Testlauf ist frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.