Statsd

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 in frameworks/base/cmds/statsd

  • StatsCompanionService in frameworks/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/socketpackages/modules/StatsD/lib/libstatssocket
    • system/core/libstats/pullpackages/modules/StatsD/lib/libstatspull
  • frameworks/base/cmds/StatsDpackages/modules/StatsD/bin
  • frameworks/base/apex/StatsD
    • Oberste Ebene unverändert kopieren
    • jni in framework/jni verschieben
    • Dateien der obersten Ebene in das Verzeichnis /apex verschieben
      • frameworks/base/apex/StatsD/\*packages/modules/StatsD/apex/\*
      • frameworks/base/apex/StatsD/jnipackages/modules/StatsD/apex/framework/jni
  • cts/hostsidetests/StatsDpackages/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.