O módulo Statsd inclui o statsd, um serviço nativo que é executado em segundo plano coletando métricas, e o serviço Java StatsCompanionService, que é executado no processo do sistema e faz a ponte entre o statsd e o Java. Esse módulo pode ser atualizado, o que significa que ele pode receber atualizações de funcionalidade (como atualizações das métricas usadas na coleta de dados) fora do ciclo normal de lançamento do Android.
Limite do módulo
O statsd é o principal ponto de contato entre a plataforma e a coleta de dados de segurança de lançamento. O módulo statsd inclui o código a seguir.
statsd, localizado emframeworks/base/cmds/statsdStatsCompanionService, localizado emframeworks/base/services/core/java/com/android/server/stats/StatsCompanionService.javaUm subconjunto das estruturas protobuf da plataforma, localizado principalmente em
frameworks/base/core/proto
Como um serviço nativo, o statsd pode sobreviver à estrutura e detectar falhas no próprio system_server.
No Android 12, o código do módulo Statsd é movido de frameworks/base/cmds/StatsD, frameworks/base/apex/StatsD e system/core/libstats.
Nova estrutura do projeto
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→- Copiar o nível superior no estado em que se encontra
- Mover
jniparaframework/jni - Mover arquivos de nível superior para o diretório
/apexframeworks/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
Exemplos de comandos de movimentação de patch
Aplique as mudanças nas seguintes ramificações:
goog/mainline-prodgoog/maingoog/\*-plus-aospaosp/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 Statsd apresenta um conjunto de APIs @hide para registrar eventos do sistema. Para o código Java, a maioria das APIs @hide é refatorada para ser criada em um conjunto menor de métodos marcados como @SystemApi, com um pequeno código de cola gerado. Para o código nativo, as funções nativas atuais são refatoradas para serem APIs C VNDK oficiais, com cola gerada.
Personalização
O módulo Statsd não oferece suporte à personalização.
Teste
O conjunto de teste de compatibilidade do Android (CTS) verifica a funcionalidade do statsd e os átomos dos quais o gerenciamento de versões depende.