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 inframeworks/base/cmds/statsd
StatsCompanionService
, befindet sich inframeworks/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/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
→- Kopieren Sie die oberste Ebene so wie sie ist
- Verschieben Sie
jni
inframework/jni
- Verschieben Sie die Dateien der obersten Ebene in das Verzeichnis
/apex
-
frameworks/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 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.