Statsd

El módulo Statsd incluye statsd, un servicio nativo que se ejecuta en segundo plano y recopila métricas, y el servicio de Java StatsCompanionService, que se ejecuta en el proceso del sistema y conecta statsd y Java. Este módulo se puede actualizar, lo que significa que puede recibir actualizaciones de funcionalidad (como actualizaciones de las métricas que se usan en la recopilación de datos) fuera del ciclo normal de lanzamientos de Android.

Límite del módulo

Statsd es el principal punto de contacto entre la plataforma y la recopilación de datos de seguridad del lanzamiento. El módulo de statsd incluye el siguiente código.

  • statsd, ubicado en frameworks/base/cmds/statsd

  • StatsCompanionService, ubicado en frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java

  • Un subconjunto de las estructuras .proto de la plataforma, ubicado principalmente en frameworks/base/core/proto

Como servicio nativo, statsd puede sobrevivir al framework y detectar fallas en el propio system_server.

En Android 12, el código del módulo de Statsd se trasladó de frameworks/base/cmds/StatsD, frameworks/base/apex/StatsD y system/core/libstats.

Nueva estructura del proyecto

  • system/core/libstatspackages/modules/StatsD/lib/libstats
    • system/core/libstats/socketpackages/modules/StatsD/lib/libstatssocket
    • system/core/libstats/pullpackages/modules/StatsD/lib/libstatspull
  • frameworks/base/cmds/StatsDpackages/modules/StatsD/bin
  • frameworks/base/apex/StatsD
    • Copiar el nivel superior tal como está
    • Mueve jni a framework/jni
    • Mueve los archivos de nivel superior al directorio /apex.
      • frameworks/base/apex/StatsD/\*packages/modules/StatsD/apex/\*
      • frameworks/base/apex/StatsD/jnipackages/modules/StatsD/apex/framework/jni
  • cts/hostsidetests/StatsDpackages/modules/StatsD/tests

Comandos de muestra de movimiento de parches

Aplica los cambios a las siguientes ramas:

  • goog/mainline-prod
  • goog/main
  • goog/\*-plus-aosp
  • aosp/main

Se debe conservar el historial de los archivos dentro de Statsd.

Formato del módulo

El módulo de statsd (com.android.os.statsd) está en formato APEX y está disponible para dispositivos que ejecutan Android 11 o versiones posteriores.

Dependencias de módulos

El módulo de Statsd presenta un conjunto de APIs de @hide para registrar eventos del sistema. En el caso del código Java, la mayoría de las APIs de @hide se refactorizan para que se compilen en un conjunto más pequeño de métodos etiquetados con @SystemApi, con algo de código de unión generado pequeño integrado. En el caso del código nativo, las funciones nativas existentes se refactorizan para que sean APIs de C oficiales del VNDK, con código de vinculación generado.

Personalización

El módulo Statsd no admite personalización.

Prueba

El Conjunto de pruebas de compatibilidad (CTS) de Android verifica la funcionalidad de statsd y los átomos de los que depende la administración de versiones.