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.
statsd
inframeworks/base/cmds/statsd
StatsCompanionService
inframeworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java
Eine Teilmenge der Plattform-Protobuf-Strukturen, die sich hauptsächlich in
frameworks/base/core/proto
befinden
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/libstats
system/core/libstats/socket
→packages/modules/StatsD/lib/libstatssocket
system/core/libstats/pull
→packages/modules/StatsD/lib/libstatspull
frameworks/base/cmds/StatsD
→packages/modules/StatsD/bin
frameworks/base/apex/StatsD
→- Oberste Ebene unverändert kopieren
jni
inframework/jni
verschieben- Dateien der obersten Ebene in das Verzeichnis
/apex
verschiebenframeworks/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-prod
goog/main
goog/\*-plus-aosp
aosp/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.