Statsd

Модуль Statsd включает statsd – встроенный сервис, который работает в фоновом режиме и собирает показатели, а также сервис Java StatsCompanionService, который работает в системном процессе и связывает statsd и Java. Этот модуль можно обновлять, то есть он может получать обновления функций (например, показателей, используемых при сборе данных) вне обычного цикла выпуска Android.

Граница модуля

Statsd – это основная точка взаимодействия между платформой и сбором данных о безопасности запуска. Модуль statsd содержит следующий код:

  • statsd, frameworks/base/cmds/statsd

  • StatsCompanionService, расположенный в 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 Compatibility Test Suite (CTS) проверяет функциональность statsd и атомов, от которых зависит управление выпусками.