Модуль Statsd включает в себя statsd, нативную службу, работающую в фоновом режиме и собирающую метрики, и службу Java StatsCompanionService , которая работает в системном процессе и связывает statsd и Java. Этот модуль обновляется, то есть он может получать обновления функциональности (например, обновления метрик, используемых для сбора данных) вне стандартного цикла выпуска Android.
Граница модуля
Statsd — это основная точка контакта между платформой и сбором данных о безопасности запуска. Модуль statsd включает следующий код.
statsd, расположенный вframeworks/base/cmds/statsdStatsCompanionService, расположенный вframeworks/base/services/core/java/com/android/server/stats/StatsCompanionService.javaПодмножество структур protobuf платформы, расположенных в основном в
frameworks/base/core/proto
Как нативная служба, statsd может пережить фреймворк и обнаруживать сбои в самом system_server .
В Android 12 код модуля Statsd перенесен из frameworks/base/cmds/StatsD , frameworks/base/apex/StatsD и system/core/libstats .
Новая структура проекта
-
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→- Копировать верхний уровень как есть
- Переместить
jniвframework/jni - Переместить файлы верхнего уровня в каталог
/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
Примеры команд перемещения патча
Примените изменения к следующим веткам:
-
goog/mainline-prod -
goog/main -
goog/\*-plus-aosp -
aosp/main
История файлов в Statsd должна быть сохранена.
Формат модуля
Модуль statsd ( com.android.os.statsd ) имеет формат APEX и доступен для устройств под управлением Android 11 и выше.
Зависимости модулей
Модуль Statsd представляет набор API @hide для регистрации событий системы. Для Java-кода большинство API @hide рефакторятся таким образом, чтобы они были построены на основе меньшего набора методов с тегом @SystemApi , с небольшим встроенным сгенерированным связующим кодом. Для нативного кода существующие нативные функции рефакторятся в официальные API VNDK C с сгенерированным связующим кодом.
Настройка
Модуль Statsd не поддерживает настройку.
Тестирование
Набор тестов на совместимость с Android (CTS) проверяет функциональность statsd и атомов, от которых зависит управление выпусками.