Statistik

Das Statsd-Modul 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 eine Brücke zwischen statsd und Java bildet. Dieses Modul kann aktualisiert werden, d. h. es kann außerhalb des normalen Android-Releasezyklus Funktionsupdates erhalten, z. B. Updates der bei der Datenerhebung verwendeten Messwerte.

Modulgrenze

Statsd ist der primäre Berührungspunkt zwischen der Plattform und der Erfassung von Daten zur Launch-Sicherheit. Das StatsD-Modul enthält folgenden Code.

  • statsd in frameworks/base/cmds/statsd

  • StatsCompanionService, befindet sich in frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java

  • Ein Teil der protobuf-Strukturen der Plattform, die sich hauptsächlich in frameworks/base/core/proto befinden

Als nativer Dienst kann statsd das Framework überdauern und Abstürze im 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 Branches an:

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

Der Verlauf der 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 enthält eine Reihe von @hide-APIs, um Ereignisse aus dem System zu protokollieren. Bei Java-Code werden die meisten @hide APIs so umstrukturiert, dass sie auf einer kleineren Gruppe von @SystemApi-getaggten Methoden basieren, mit etwas generiertem Glue-Code. Vorhandene native Funktionen für nativen Code werden zu offiziellen VNDK C APIs mit generiertem Klebstoff refaktoriert.

Personalisierung

Das Statsd-Modul unterstützt keine Anpassung.

Testen

Die Android Compatibility Test Suite (CTS) prüft die Funktionalität von statsd und den Atomen, von denen die Releaseverwaltung abhängt.