Implementieren der bereichsbezogenen Lieferantenprotokollierung

Android 11 fügt eine neue HAL hinzu, IDumpstateDevice (Version 1.1). Diese HAL macht neue Methoden verfügbar, um Herstellerprotokolle, die in standardmäßigen Fehlerberichten enthalten sind, genauer einzugrenzen, und ermöglicht es Benutzerbuilds, die Herstellerprotokollierung ein- und auszuschalten (die Standardeinstellung für Benutzerbuilds ist deaktiviert). Dies gibt OEMs mehr Kontrolle darüber, was in bestimmten Arten von Fehlerberichten enthalten ist.

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

Was Sie in Fehlerberichte aufnehmen, hängt davon ab, welche Informationen Sie für das Debugging relevant finden, aber im Allgemeinen ist ausführlicherer besser.

Beispiele und Quelle

Es gibt eine Standardimplementierung der (veraltet) Version 1.0 von IDumpstateDevice , dass zeigt ein Beispiel für die dumpstate util - Bibliothek: frameworks/native/cmds/dumpstate/DumpstateUtil.h . Es gibt auch eine Tintenfische Umsetzung des 1.1 HAL: device/google/cuttlefish/guest/monitoring/dumpstate_ext/* .

Der Quellcode befindet sich hier:

Implementierung

Um dieses HAL zu implementieren, implementieren die android.hardware.dumpstate@1.1::IDumpstateDevice HAL - Schnittstelle. Es gibt viele möglichen DumpstateMode Werte, aber alle sind wahrscheinlich nicht von einem einzigen Gerät unterstützt werden (zum Beispiel WEAR für Nicht-Wear - OS - Geräte).

Die Implementierung der Dumpstate-HAL ist optional. Alle neuen Geräte, die mit Android 11 gestartet werden, MÜSSEN IDumpstateDevice 1.1 implementieren, wenn sie die Dumpstate HAL implementieren. Geräte, die IDumpstateDevice 1.0 bereits vor Android 11 implementiert haben, sollten relativ einfach auf 1.1 aktualisiert werden. Dies wird dringend empfohlen, da dies die Menge an überflüssigen privaten Informationen in Fehlerberichten erheblich reduziert.

Diese Funktion ist abhängig von den dumpstate Änderungen Kern auch mit Android 11 enthalten, die sich unter frameworks/native/cmds/dumpstate .

Die Implementierung dieser HAL erfordert wahrscheinlich einige SEPolicy-Änderungen an bestimmten Systemeigenschaften, Dateien usw., damit die Dinge vollständig funktionieren, und erfordert eine Abstimmung mit den Anbietern, um alle relevanten Informationen in Fehlerberichten zu speichern.

Anpassung

Der Gerätebenutzer kann die Anbieteranmeldung mithilfe der Entwicklereinstellungen ein- oder ausschalten. Wenn es ausgeschaltet ist , dumpstateBoard_1_1 kann noch Ausgang minimal wesentliche Informationen , wie durch den OEM bestimmt. Turning Anbieter abzumelden macht IDumpstateDevice::dumpstateBoard hinzufügen nur die wichtigsten Informationen auf einen Fehlerbericht, während es dem Einschalten enthält unabhängig von Informationen , die die OEM wählt.

Sie können ändern dumpstate.cpp (die die IDumpstateDevice HAL Methoden aufrufen), zum Beispiel, das Timeout für gegeben zu erhöhen dumpstateBoard abzuschließen. Allerdings ist die Kernlogik der dumpstate.cpp sollte unverändert bleiben.

Zeitüberschreitungen können einen beliebigen Wert haben, sie sollten jedoch die Zeit, die ein Fehlerbericht benötigt, nicht dramatisch verlängern. Insbesondere DumpstateMode::CONNECTIVITY ist sehr zeitempfindlich und Bedürfnisse so schnell wie möglich laufen alle relevanten Modem / Wi-Fi / Netzwerkprotokolle zu sammeln.

Validierung

Es gibt einen VTS - Test für die IDumpstateDevice Implementierung, und es gibt funktionelle Unit - Tests für die allgemeine BugreportManager Funktionalität.

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