Implementierung der bereichsbezogenen Lieferantenprotokollierung

Android 11 fügt ein neues HAL hinzu, IDumpstateDevice (Version 1.1). Dieses HAL macht neue Methoden für einen engeren Geltungsbereich von Anbieterprotokollen verfügbar, die in Standardfehlerberichten enthalten sind, und ermöglicht es Benutzer-Builds, die Anbieterprotokollierung ein- und auszuschalten (die Standardeinstellung für Benutzer-Builds ist „Aus“). Dies gibt OEMs mehr Kontrolle darüber, was in bestimmte Arten von Fehlerberichten aufgenommen wird.

Diese Funktion wirkt sich auf OEMs aus, wenn sie sich für die Implementierung dieses optionalen HAL entscheiden. SoCs könnten betroffen sein, je nachdem, was der OEM mit diesem HAL offenlegt. Es sind keine Auswirkungen auf die Spediteure zu erwarten.

Was Sie in Fehlerberichte aufnehmen, hängt davon ab, welche Informationen Sie für das Debuggen relevant finden. Im Allgemeinen ist es jedoch besser, ausführlicher zu sein.

Beispiele und Quelle

Es gibt eine Standardimplementierung der (veralteten) 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 des 1.1 HAL: device/google/cuttlefish/guest/monitoring/dumpstate_ext/* .

Der Quellcode befindet sich hier:

Implementierung

Um diese HAL zu implementieren, implementieren Sie die HAL-Schnittstelle android.hardware.dumpstate@1.1::IDumpstateDevice . 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 des dumpstate HAL ist optional. Alle neuen Geräte, die mit Android 11 gestartet werden, MÜSSEN IDumpstateDevice 1.1 implementieren, wenn sie den Dumpstate HAL implementieren. Geräte, die IDumpstateDevice 1.0 bereits vor Android 11 implementiert haben, sollten relativ einfach auf 1.1 aktualisiert werden können. Dies wird dringend empfohlen, da dadurch die Menge an überflüssigen privaten Informationen, die in Fehlerberichten enthalten sind, erheblich reduziert wird.

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

Die Implementierung dieses HAL wird wahrscheinlich einige SEPolicy-Änderungen an bestimmten Systemeigenschaften, Dateien usw. erfordern, damit die Dinge vollständig funktionieren, und erfordert eine Abstimmung mit Anbietern, um alle relevanten Informationen in Fehlerberichte zu übertragen.

Anpassung

Der Gerätebenutzer kann die Anbieteranmeldung mithilfe der Entwicklereinstellungen ein- oder ausschalten. Wenn es deaktiviert ist, gibt dumpstateBoard_1_1 möglicherweise immer noch minimale wichtige Informationen aus, wie vom OEM festgelegt. Wenn Sie die Anbieterprotokollierung deaktivieren, fügt IDumpstateDevice::dumpstateBoard nur wesentliche Informationen zu einem Fehlerbericht hinzu, während die Aktivierung alle vom OEM ausgewählten Informationen enthält.

Sie können dumpstate.cpp (das die HAL-Methoden von IDumpstateDevice 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.

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

Validierung

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

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