Criar um perfil de desempenho do seu app

Considera-se que um app tem uma performance ruim se ele responde de forma lenta, mostra animações entrecortadas, trava ou consome muita bateria. A correção de problemas de performance envolve a identificação de áreas em que o app usa recursos de maneira ineficiente, como CPU, memória, gráficos, rede ou bateria do dispositivo.

Para encontrar e corrigir esses problemas, use as ferramentas e técnicas de criação de perfil e comparação descritas neste tópico. Para aprender técnicas de medição de desempenho e ver exemplos de como elas podem ser usadas para resolver problemas específicos, consulte Como medir o desempenho.

O Android Studio oferece várias ferramentas de criação de perfil para ajudar a encontrar e visualizar possíveis problemas:

  • O CPU Profiler ajuda a monitorar problemas de desempenho no momento da execução.
  • O Memory Profiler ajuda a monitorar alocações de memória.
  • O Energy Profiler monitora o uso de energia, que pode contribuir para o consumo elevado da bateria.

Essas ferramentas são compatíveis com o Android 5.0 (nível 21 da API) e mais recentes. Para saber mais sobre as ferramentas, consulte as outras páginas nesta seção do guia do usuário.

As bibliotecas do Jetpack Benchmark permitem medir várias operações importantes do aplicativo:

  • Macrobenchmark: faz a medição de casos de uso de desempenho importantes, incluindo inicialização e reexibição de aplicativos acionadas por ações como animações ou rolagem da IU.
  • Microbenchmark: mede o custo da CPU de funções específicas.

Para saber mais sobre essas bibliotecas, consulte a página Comparar seu app.

Aplicativos com perfil

Profileable é uma configuração de manifesto apresentada no Android Q. Ela pode especificar se o usuário do dispositivo tem permissão para criar perfis nesse aplicativo usando ferramentas como o Android Studio, Simpleperf e Perfetto.

Antes da configuração profileable, a maioria dos desenvolvedores só podia criar perfis para apps depuráveis no Android, o que aumentava os custos de desempenho de maneira significativa. Esses custos podem invalidar os resultados da criação de perfil, principalmente se estiverem relacionados ao tempo. A Tabela 1 resume as diferenças entre apps depuráveis e com perfil.

Tabela 1. Resumo das principais diferenças entre apps depuráveis e com perfil.
Recurso Depurável Com perfil
Memory Profiler Totalmente

Sim:

Não:

CPU Profiler Totalmente

Sim:

Não:

Network Profiler Sim Não
Energy Profiler Sim Não
Power Profiler Sim Sim
Event Monitor Sim Não

A configuração Profileable foi apresentada para que os desenvolvedores possam permitir que os apps deles exponham informações às ferramentas de criação de perfil gerando custos de desempenho muito baixos. Um APK com perfil é essencialmente um APK de lançamento com uma linha de <profileable android:shell="true"/> adicionada à seção <application> do arquivo de manifesto.

Criar e executar um app com perfil automaticamente

É possível configurar, criar e executar um app com perfil em apenas um clique. Esse recurso requer um dispositivo de teste físico ou virtual que execute o nível 29 ou mais recente da API e tenha o Google Play. Para usar, clique na seta ao lado do ícone Profile app e escolha entre duas opções:

Menu de criação de perfis com apenas um clique.
  • A opção Profile 'app' with low overhead inicia a CPU e os Memory Profilers. No Memory Profiler, apenas a opção Record Native Allocations fica ativada.

    Criação de perfil com overhead baixo.
  • A opção Profile 'app' with complete data inicia a CPU, os Memory Profilers e os Energy Profilers.

    Criação de perfil com dados completos.

Criar e executar um app com perfil manualmente

Para criar um app com perfil manualmente, primeiro crie um aplicativo de lançamento e depois atualize o arquivo de manifesto dele, o que o transforma em um app com perfil. Depois de configurar o aplicativo com perfil, inicie o criador de perfil e selecione um processo para análise.

Criar um app de lançamento

Para criar um aplicativo de lançamento e permitir a criação de perfil, siga estas etapas:

  1. Assine seu aplicativo com a chave de depuração adicionando as seguintes linhas ao arquivo build.gradle. Se você já tiver uma variante de build de lançamento funcionando, pule para a próxima etapa.

            buildTypes {
              release {
                signingConfig signingConfigs.debug
              }
            }
          
  2. No Android Studio, selecione Build > Select Build Variant… e escolha a variante de lançamento.

Mudar de lançamento para com perfil

  1. Converta o aplicativo de lançamento acima em um aplicativo com perfil abrindo as AndroidManifest.xml e adicionando o seguinte em <application>. Para conferir mais detalhes, consulte Criar o app para lançamento.

    <profileable android:shell="true"/>

  2. Dependendo da versão do SDK, talvez seja necessário adicionar estas linhas ao arquivo build.gradle do aplicativo:

          aaptOptions {
            additionalParameters =["--warn-manifest-validation"]
          }
        

Criar perfil em um app com perfil

Para criar um perfil em um app com perfil, siga estas etapas:

  1. No emulador ou dispositivo de desenvolvimento, abra o app.

  2. No Android Studio, inicie o criador de perfil selecionando View > Tool Windows > Profiler.

  3. Depois que o aplicativo for iniciado, clique no botão Botão de adição dos criadores de perfil no criador de perfil para ver o menu suspenso. Selecione seu dispositivo e a entrada do aplicativo em Other profileable processes.

    Menu com perfil
  4. O criador de perfil será anexado ao aplicativo. Somente a CPU e os Memory Profilers estão disponíveis, com capacidades limitadas para o Memory Profiler.

    Visualização da sessão com perfil
    Menu com perfil
    Menu com perfil

Sessões

É possível salvar os dados do Profiler como sessões, que são mantidas até que você saia do Android Studio. Ao gravar informações de criação de perfil em várias sessões e alternar entre elas, você pode comparar o uso de recursos em vários cenários.

  • Para iniciar uma nova sessão, clique no botão Start a new profiling session e selecione um processo de app no menu suspenso mostrado.
  • Quando você grava um rastro ou captura um heap dump, o Android Studio adiciona esses dados à sessão atual, junto à atividade de rede do app, como uma entrada separada.
  • Para interromper a adição de dados à sessão atual, clique em Stop the current profiling session .
  • Para importar um rastro exportado de uma execução anterior do Android Studio, clique em Start new profiler session e escolha Load from file.

Ativar suporte extra a dispositivos mais antigos (níveis da API anteriores ao 26)

Para mostrar mais dados de criação de perfil ao executar um dispositivo com o Android 7.1 ou versões anteriores, o Android Studio precisa injetar a lógica de monitoramento no app compilado. Esses outros dados de criação de perfil incluem o seguinte:

  • A linha do tempo de eventos em todas as janelas de criador de perfil
  • O número de objetos alocados no Memory Profiler
  • Eventos de coleta de lixo no Memory Profiler
  • Detalhes de todos os arquivos transmitidos no Network Profiler

Para ativar o suporte extra para dispositivos mais antigos, siga estas etapas:

  1. Selecione Run > Edit Configurations.
  2. Selecione o módulo do app no painel esquerdo.
  3. Clique na guia Profiling e marque a opção Enable additional support for older devices (API level < 26).
  4. Crie e execute o app de novo.

A ativação do suporte extra a dispositivos mais antigos torna o processo de build mais lento. Portanto, ative-a somente quando quiser iniciar a criação de perfil do app.

Executar criadores de perfis independentes

Os criadores de perfil independentes do Android Studio permitem criar perfis de app sem executar o ambiente de desenvolvimento integrado completo do Android Studio.

Para executar os criadores de perfil independentes, faça o seguinte:

  1. Verifique se o criador de perfil não está sendo executado junto do Android Studio.
  2. Acesse o diretório de instalação e navegue até o diretório bin:

    Windows/Linux: studio-installation-folder/bin

    macOS: criadores de perfil independentes não estão disponíveis no macOS.

  3. Dependendo do seu SO, execute profiler.exe ou profiler.sh. A tela de apresentação do Android Studio vai aparecer. Depois que a tela de apresentação desaparece, uma janela do criador de perfil é aberta.