Statsd

Das Modul „Statsd“ umfasst statsd, einen nativen Dienst, der im Hintergrund ausgeführt wird und Messwerte erfasst, sowie den Java-Dienst StatsCompanionService, der im Systemprozess ausgeführt wird und statsd und Java miteinander verbindet. Dieses Modul kann aktualisiert werden. Das bedeutet, dass es außerhalb des normalen Android-Releasezyklus Updates für Funktionen (z. B. Updates für die in der Datenerfassung verwendeten Messwerte) erhalten kann.

Modulgrenze

Statsd ist der primäre Kontaktpunkt zwischen der Plattform und der Datenerfassung zur Überprüfung der Release-Sicherheit. Das Modul „Statsd“ 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 länger als das Framework ausgeführt werden und Abstürze im system_server selbst erkennen.

In Android 12 wird der Code des Moduls „Statsd“ aus frameworks/base/cmds/StatsD, frameworks/base/apex/StatsD und system/core/libstats verschoben.

Neue Projektstruktur

  • system/core/libstatspackages/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
    • Kopieren Sie die oberste Ebene unverändert.
    • Verschieben Sie jni in framework/jni.
    • Verschieben Sie Dateien der obersten Ebene in das Verzeichnis /apex.
      • 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 zum Verschieben von Patches

Wenden Sie die Änderungen auf die folgenden Zweige an:

  • goog/mainline-prod
  • goog/main
  • goog/\*-plus-aosp
  • aosp/main

Der Verlauf der Dateien in „Statsd“ sollte beibehalten werden.

Modulformat

Das Modul „Statsd“ (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 Modul „Statsd“ 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 mit @SystemApi getaggten Methoden basieren. Außerdem wird etwas generierter Glue-Code eingebaut. Für nativen Code werden vorhandene native Funktionen so umgestaltet, dass sie offizielle VNDK-C-APIs mit generiertem Glue-Code sind.

Anpassung

Das Modul „Statsd“ unterstützt keine Anpassung.

Test

Die Android Compatibility Test Suite (CTS) überprüft die Funktionalität von statsd und der Atome, von denen die Releaseverwaltung abhängt.