Das Statsd-Modul enthält statsd, einen nativen Dienst, der im Hintergrund ausgeführt wird, um Messwerte zu erfassen, und den Java-Dienst StatsCompanionService, der im Systemprozess ausgeführt wird und statsd und Java verbindet. Dieses Modul kann aktualisiert werden. Das bedeutet, dass es außerhalb des normalen Android-Releasezyklus Funktionsupdates (z. B. Updates der in der Datenerhebung verwendeten Messwerte) erhalten kann.
Modulgrenze
Statsd ist der primäre Berührungspunkt zwischen der Plattform und der Erfassung von Daten zur Startbereitschaft. Das statsd-Modul enthält den folgenden Code.
statsdinframeworks/base/cmds/statsdStatsCompanionServiceinframeworks/base/services/core/java/com/android/server/stats/StatsCompanionService.javaEine Teilmenge der Plattform-Protobuf-Strukturen, die sich hauptsächlich in
frameworks/base/core/protobefinden
Als nativer Dienst kann statsd das Framework überdauern und Abstürze in system_server selbst erkennen.
In Android 12 wird der Statsd-Modulcode aus frameworks/base/cmds/StatsD, frameworks/base/apex/StatsD und system/core/libstats verschoben.
Neue Projektstruktur
system/core/libstats→packages/modules/StatsD/lib/libstatssystem/core/libstats/socket→packages/modules/StatsD/lib/libstatssocketsystem/core/libstats/pull→packages/modules/StatsD/lib/libstatspull
frameworks/base/cmds/StatsD→packages/modules/StatsD/binframeworks/base/apex/StatsD→- Oberste Ebene unverändert kopieren
jniinframework/jniverschieben- Dateien der obersten Ebene in das Verzeichnis
/apexverschiebenframeworks/base/apex/StatsD/\*→packages/modules/StatsD/apex/\*frameworks/base/apex/StatsD/jni→packages/modules/StatsD/apex/framework/jni
cts/hostsidetests/StatsD→packages/modules/StatsD/tests
Beispielbefehle für das Verschieben von Patches
Wenden Sie die Änderungen auf die folgenden Zweige an:
goog/mainline-prodgoog/maingoog/\*-plus-aospaosp/main
Der Verlauf für die Dateien in Statsd sollte beibehalten werden.
Modulformat
Das statsd-Modul (com.android.os.statsd) ist im APEX-Format verfügbar und kann auf Geräten mit Android 11 oder höher verwendet werden.
Modulabhängigkeiten
Das Statsd-Modul bietet eine Reihe von @hide-APIs zum Protokollieren von Ereignissen aus dem System. Für Java-Code werden die meisten @hide-APIs so umgestaltet, dass sie auf einer kleineren Gruppe von @SystemApi-Methoden basieren. Außerdem ist ein kleiner generierter Glue-Code integriert. Für nativen Code werden vorhandene native Funktionen in offizielle VNDK-C-APIs mit generiertem Glue-Code umgestaltet.
Personalisierung
Das Statsd-Modul unterstützt keine Anpassung.
Testen
Die Android Compatibility Test Suite (CTS) prüft die Funktionalität von „statsd“ und der Atoms, von denen die Releaseverwaltung abhängt.