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.
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.](https://developer.android.com/static/studio/images/one-click-profileable-build-menu.png?authuser=9&hl=pt)
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.
A opção Profile 'app' with complete data inicia a CPU, os Memory Profilers e os Energy Profilers.
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:
-
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 } }
-
No Android Studio, selecione Build > Select Build Variant… e escolha a variante de lançamento.
Mudar de lançamento para com perfil
-
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"/>
-
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:
-
No emulador ou dispositivo de desenvolvimento, abra o app.
-
No Android Studio, inicie o criador de perfil selecionando View > Tool Windows > Profiler.
-
Depois que o aplicativo for iniciado, clique no botão
no criador de perfil para ver o menu suspenso. Selecione seu dispositivo e a entrada do aplicativo em Other profileable processes.
-
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.
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:
- Selecione Run > Edit Configurations.
- Selecione o módulo do app no painel esquerdo.
- Clique na guia Profiling e marque a opção Enable additional support for older devices (API level < 26).
- 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:
- Verifique se o criador de perfil não está sendo executado junto do Android Studio.
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.
- Dependendo do seu SO, execute
profiler.exe
ouprofiler.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.