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
inframeworks/base/cmds/statsd
StatsCompanionService
, befindet sich inframeworks/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/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 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.