Модуль 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/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→- Копировать верхний уровень как есть
- Переместить
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-prodgoog/maingoog/\*-plus-aospaosp/main
История файлов в Statsd должна быть сохранена.
Формат модуля
Модуль statsd (com.android.os.statsd) имеет формат APEX и доступен на устройствах с Android 11 или более поздней версии.
Зависимости модулей
Модуль Statsd предоставляет набор API @hide для регистрации событий из системы. Для кода на Java большинство API @hide переработаны так, чтобы использовать меньшее количество методов с тегом @SystemApi. При этом в код встроены небольшие фрагменты сгенерированного связующего кода. Для нативного кода существующие нативные функции реорганизуются в официальные API VNDK C с созданным связующим кодом.
Настройка канала
Модуль Statsd нельзя настраивать.
Тестирование
Android Compatibility Test Suite (CTS) проверяет функциональность statsd и атомов, от которых зависит управление выпусками.