Statistik

Das Statsd-Modul umfasst statsd, einen nativen Dienst, der im Hintergrund ausgeführt wird und Metriken sammelt, und den Java-Dienst StatsCompanionService , der im Systemprozess ausgeführt wird und statsd und Java verbindet. Dieses Modul ist aktualisierbar, was bedeutet, dass es außerhalb des normalen Android-Release-Zyklus Aktualisierungen der Funktionalität erhalten kann (z. B. Aktualisierungen der bei der Datenerfassung verwendeten Metriken).

Modulgrenze

Statsd ist der primäre Berührungspunkt zwischen der Plattform und der Datenerfassung zur Startsicherheit. Das statsd-Modul enthält den folgenden Code.

  • statsd , befindet sich in frameworks/base/cmds/statsd

  • StatsCompanionService , befindet sich 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 befindet

Als nativer Dienst kann statsd das Framework überleben und Abstürze im system_server selbst erkennen.

In Android 12 wird der Code des Statsd-Moduls 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 so wie sie ist
    • Verschieben Sie jni in framework/jni
    • Verschieben Sie die 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 erhalten bleiben.

Modulformat

Das statsd-Modul ( com.android.os.statsd ) liegt im APEX- Format vor und ist für Geräte mit Android 11 oder höher verfügbar.

Modulabhängigkeiten

Das Statsd-Modul stellt eine Reihe von @hide APIs zur Protokollierung von Ereignissen aus dem System bereit. Für Java-Code werden die meisten @hide APIs so umgestaltet, dass sie auf einem kleineren Satz von @SystemApi getaggten Methoden aufbauen, wobei ein kleiner generierter Glue-Code integriert ist. Für nativen Code werden vorhandene native Funktionen so umgestaltet, dass sie offizielle VNDK-C-APIs mit generiertem Code sind Kleber.

Anpassung

Das Statsd-Modul unterstützt keine Anpassung.

Testen

Die Android Compatibility Test Suite (CTS) überprüft die Funktionalität von statsd und den Atomen, von denen das Release-Management abhängt.