A API ProfilingManager permite coletar perfis de desempenho de usuários reais,
como rastreamentos do sistema e heap dumps do Java, de dispositivos de produção com o
Android 15 (nível 35 da API) e versões mais recentes. Ele oferece suporte a dois mecanismos de coleta:
perfis orientados por apps, em que o app controla a coleta de perfis do
início ao fim (Android 15 e versões mais recentes), e perfis baseados em acionadores, em que o
sistema processa a captura em resposta a eventos em que você registra interesse
no Android 16 (nível 36 da API) e versões mais recentes.
Neste guia, abordamos os seguintes tópicos:
- Capturar perfis: como iniciar e interromper gravações de perfil orientadas por apps e como se registrar para gravações de perfil baseadas em gatilhos.
- Recuperar e fazer upload de perfis: como recuperar perfis localmente
com
adbou fazer upload deles em segundo plano comWorkManager. - Analisar perfis: como visualizar perfis na interface do Perfetto, consultar perfis com o PerfettoSQL, analisar traces em massa e analisar perfis com IA.
- Estudos de caso de depuração: como aplicar o
ProfilingManagerde ponta a ponta para depurar um ANR e depurar uma falha de OOM. - Limitação de taxa e comportamento de coleta: como entender a limitação de taxa e o comportamento de coleta na produção.
- Depuração local: como usar comandos de depuração para criação de perfil local.
Tipos de perfil compatíveis
O ProfilingManager oferece suporte à coleta de vários tipos de perfis para que você possa
lidar com problemas de desempenho específicos no seu app. É possível configurar solicitações
diretamente usando APIs de plataforma ou os builders do AndroidX Core:
- Rastreamentos do sistema: capturados usando
PROFILING_TYPE_SYSTEM_TRACEouSystemTraceRequestBuilder.- Útil para diagnosticar instabilidade, analisar latência e depurar o desempenho geral.
- Heap dumps do Java: capturados usando
PROFILING_TYPE_JAVA_HEAP_DUMPouJavaHeapDumpRequestBuilder.- Captura um snapshot do gráfico e dos tamanhos de objetos de heap Java do app para detecção de vazamento de memória e otimização de memória.
- Perfis de alocação heap: capturados usando
PROFILING_TYPE_HEAP_PROFILEouHeapProfileRequestBuilder.- Rastreia alocações de memória nativa (ou, opcionalmente, Java) ao longo do tempo para ajudar a otimizar o uso da memória.
- Amostragem de pilha: capturada usando
PROFILING_TYPE_STACK_SAMPLINGouStackSamplingRequestBuilder.- Amostras de pilhas de chamadas de linha de execução para ajudar você a entender a execução de código e analisar o uso da CPU.
Integrar o ProfilingManager a um agente de IA
Você pode usar um agente de programação de IA para integrar o ProfilingManager ao seu app.
Por exemplo, execute o seguinte comando no agente de programação de IA para configurar
a coleta de acionadores de erros O app não está respondendo (ANR), substituindo
</path/to/codebase> pelo caminho para seu app:
Read https://developer.android.com/topic/performance/tracing/profiling-manager/trigger-based-capture
and https://developer.android.com/topic/performance/tracing/profiling-manager/upload-worker
and integrate ProfilingManager ANR trigger collection (TRIGGER_TYPE_ANR) into my
app at </path/to/codebase>, including registering the result listener after app
startup completes and scheduling a WorkManager upload job when a profile is
received.
É possível adaptar esse comando para configurar outros gatilhos do sistema (como
TRIGGER_TYPE_OOM) ou configurar capturas de perfil orientadas por app usando
o guia de criação de perfil orientada por app. Após a integração, teste sua configuração localmente
usando os comandos de depuração para criação de perfil local e analise os perfis
coletados com um agente de IA.