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.
statsdinframeworks/base/cmds/statsdStatsCompanionServiceinframeworks/base/services/core/java/com/android/server/stats/StatsCompanionService.javaEine Teilmenge der Plattform-Protobuf-Strukturen, die sich hauptsächlich in
frameworks/base/core/protobefinden
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/libstats→packages/modules/StatsD/lib/libstatssystem/core/libstats/socket→packages/modules/StatsD/lib/libstatssocketsystem/core/libstats/pull→packages/modules/StatsD/lib/libstatspull
frameworks/base/cmds/StatsD→packages/modules/StatsD/binframeworks/base/apex/StatsD→- Kopieren Sie die oberste Ebene unverändert.
- Verschieben Sie
jniinframework/jni. - Verschieben Sie 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-prodgoog/maingoog/\*-plus-aospaosp/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.