Estatísticas

O módulo Statsd inclui statsd, um serviço nativo executado em segundo plano que coleta métricas, e o serviço Java StatsCompanionService, que é executado no processo do sistema e faz a ponte entre statsd e Java. Esse módulo é atualizável, ou seja, ele pode receber atualizações de funcionalidade, como atualizações nas métricas usadas na coleta de dados, fora do ciclo normal de versão do Android.

Limite do módulo

O Statsd é o ponto de contato principal entre a plataforma e a coleta de dados de segurança de lançamento. O módulo statsd inclui o seguinte código.

  • statsd, localizada neste local: frameworks/base/cmds/statsd

  • StatsCompanionService, localizado em frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java

  • Um subconjunto das estruturas protobuf da plataforma, localizado principalmente em frameworks/base/core/proto

Como um serviço nativo, o statsd pode sobreviver ao framework e detectar falhas no system_server.

No Android 12, o código do módulo Statsd foi movido de frameworks/base/cmds/StatsD, frameworks/base/apex/StatsD e system/core/libstats.

Nova estrutura do projeto

  • 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 o nível superior como está
    • Mover jni para framework/jni
    • Mova os arquivos de nível superior para o diretório /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 amostra de movimentação de patch

Aplique as mudanças às seguintes ramificações:

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

O histórico dos arquivos no Statsd precisa ser preservado.

Formato do módulo

O módulo statsd (com.android.os.statsd) está no formato APEX e está disponível para dispositivos com o Android 11 ou mais recente.

Dependências do módulo

O módulo do Statsd apresenta um conjunto de APIs @hide para registrar eventos do sistema. No caso de código Java, a maioria das APIs @hide é refatorada para ser criada em um conjunto menor de métodos marcados @SystemApi, com um pequeno código de cola gerado integrado. Para o código nativo, as funções nativas atuais são reestruturadas para serem APIs C do VNDK oficiais, com cola gerada.

Personalização

O módulo Statsd não tem suporte à personalização.

Teste

O conjunto de teste de compatibilidade do Android (CTS) verifica a funcionalidade do statsd e os átomos em que o gerenciamento de lançamentos depende.