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 Network Profiler monitora o uso do tráfego de rede.
  • O Energy Profiler monitora o uso de energia, que pode aumentar o consumo da bateria.

Para ver mais informações sobre essas ferramentas, consulte a página Criadores de perfil do Android Studio.

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
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.
  • 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 baixo overhead.
  • 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 app de lançamento acima em um app com perfil abrindo o arquivo AndroidManifest.xml e adicionando a linha a seguir dentro de <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