O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Resolver problemas de desempenho do build

No Android Studio 4.0 e versões mais recentes com o Plug-in do Android para Gradle 4.0.0 e mais recentes, é possível usar o Build Analyzer para inspecionar o desempenho do build do projeto. O desempenho do build pode ser afetado por vários fatores que podem ser diferentes entre os builds. Para cada build realizado, o Build Analyzer tenta apresentar as informações mais importantes sobre cada build, para que você possa identificar e resolver rapidamente as regressões no desempenho do build.

Esta página apresenta uma visão geral do Build Analyzer e algumas orientações sobre como usar a ferramenta para melhorar o desempenho do build do projeto. Caso ainda não tenha feito isso, experimente outras estratégias para melhorar o desempenho do build lendo Otimizar a velocidade do build.

Os dados que o Analyzer apresenta mudam com base em cada build. Especialmente com builds grandes e complexos, muitos fatores podem mudar entre os builds, o que altera os dados que o Analyzer exibe para você como fatores importantes na duração do build. Por esse motivo, pode ser útil criar seu projeto várias vezes e comparar os dados no Analyzer para identificar padrões.

Primeiros passos

Cada vez que você cria seu app, o Build Analyzer gera um relatório e exibe dados do relatório mais recente na janela Build. Para começar, faça o seguinte:

  1. Verifique se você está usando a versão mais recente do Android Studio com o Plug-in do Android para Gradle 4.0.0 e versões mais recentes.
  2. Caso ainda não tenha feito isso, crie seu app de uma das seguintes maneiras:
    • Clique em Build > Make Project na barra de menu.
    • Crie um Android App Bundle ou APK clicando em Build > Build Bundle(s) / APK(s) > Build Bundle(s) ou Build > Build Bundle(s) / APK. (s) > Build APK(s) na barra de menu.
  3. Abra a janela Build selecionando View > Tool Windows > Build na barra de menu.
  4. Na janela Build, clique na guia Build Analyzer para visualizar o relatório de compilação no Build Analyzer.

Figura 1. O Build Analyzer oferece uma análise dos plug-ins mais responsáveis pela duração do build.

Quando você abre o Build Analyzer, a janela mostra um detalhamento dos plug-ins que mais contribuíram para a duração do build, além de uma árvore para ajudar a analisar outros dados úteis sobre seu build, conforme mostrado na figura 1.

É importante observar que o Build Analyzer não exibe dados de todas as tarefas do build. Em vez disso, ele se concentra apenas nas tarefas que determinam a duração total do build.

Quais tarefas determinam a duração de compilação?

O Gradle determina a execução de tarefas por interdependências de tarefas, estrutura do projeto e carga de CPU e executa as tarefas de forma sequencial ou em paralelo. Para um build determinado, o Build Analyzer destaca o conjunto de tarefas executadas sequencialmente que determinou a duração da compilação atual. Solucionar as ineficiências nessas tarefas destacadas é o melhor ponto de partida para reduzir o tempo de compilação total.

Lembre-se de que você poderá ver um conjunto diferente de tarefas determinando a duração de cada build que executar. Por exemplo, se você fizer mudanças na configuração, executar um build com um conjunto diferente de tarefas (como um build incremental) ou com restrições diferentes (como carga maior sobre a CPU), a janela "Build Speed" poderá destacar um conjunto diferente de tarefas que mais afetaram a duração desse build. Devido a essa variabilidade, convém usar a janela "Build Speed" em vários builds para reduzir de forma consistente a duração da compilação.

Plug-ins com tarefas que determinam a duração do build

Ao abrir o Build Analyzer pela primeira vez após concluir o build, a janela exibirá dados sobre os plug-ins que apresentam tarefas que determinam a duração do build, conforme mostrado na Figura 1. À direita, a janela apresenta um detalhamento visual desses plug-ins e suas contribuições relativas à duração do build. Isso permite que você identifique rapidamente os plug-ins que convém inspecionar primeiro.

No painel esquerdo, expanda o nó ao lado de Plugins with tasks determining the build’s duration para ver mais dados que o Build Analyzer coletou para cada plug-in. Por exemplo, cada plug-in inclui um nó filho que agrupa as tarefas que o Gradle executou durante o último build e o Analyzer considera importante para a duração total do build. Cada nó exibe o tempo total necessário para executar os filhos diretos do nó. Essas durações podem ajudar você a se concentrar na inspeção das tarefas com maior impacto na duração do build.

Se o Build Analyzer confirmar que algumas tarefas podem ser configuradas para que sejam executadas com mais eficiência, ele agrupará essas tarefas em um nó rotulado como Warnings. Você também pode inspecionar todos os avisos do build expandindo o nó Warnings de nível superior perto da parte inferior do painel esquerdo.

Tarefas que determinam a duração do build

Quando você seleciona o nó Tasks determining this build’s duration da árvore, o Build Analyzer exibe um detalhamento visual de tarefas que tiveram maior impacto na duração do build. Ou seja, esse nó não agrupa tarefas por plug-in, e sim classifica cada tarefa pelo tempo que levou para execução.

Cada tarefa é codificada por cores da seguinte maneira:

  • Rosa: a tarefa pertence ao Plug-in do Android para Gradle, do Java para Gradle ou ao plug-in do Kotlin Gradle.
  • Azul: a tarefa pertence a um plug-in personalizado ou de terceiros. Por exemplo, um plug-in que você pode ter aplicado depois de criar um novo projeto usando o Android Studio.
  • Roxo: a tarefa não pertence a um plug-in, mas é usada para modificar dinamicamente as propriedades do projeto no tempo de execução. Por exemplo, essas são tarefas que você pode definir nos seus arquivos build.gradle.
  • Azul-claro: a tarefa não tem um impacto alto na duração do build em comparação a outras tarefas destacadas pelo Analyzer.

Depois de expandir o nó Tasks determining this build's duration, é possível clicar em cada tarefa filha para saber mais sobre a execução. Por exemplo, o Analyzer oferece outras informações, como o plug-in pai, o tipo de tarefa, outras tarefas que causaram essa tarefa e se a tarefa foi executada de forma incremental, conforme mostrado na figura 2. O Analyzer também pode gerar avisos que podem ajudar você a configurar a tarefa para que ela seja executada com mais eficiência.

Figura 2. O Build Analyzer exibe detalhes sobre uma execução de tarefa específica.

Inspecionar avisos

O Build Analyzer apresenta avisos quando detecta tarefas que podem não estar configuradas para serem executadas com eficiência. Por exemplo, uma tarefa que não usa as APIs apropriadas do Gradle para especificar entradas e saídas não pode tirar proveito dos builds incrementais. Caso seu build inclua essas tarefas, o Build Analyzer poderá sinalizá-las com um aviso de Always-run, porque elas precisam ser executadas em todos os builds, independentemente de mudanças de entradas.

Para ver todos os avisos identificados pelo Analyzer para seu build, expanda o nó Warnings de nível superior. Depois de expandir o nó, é possível ver os avisos agrupados por categoria. Por exemplo, o nó Always-run agrupa tarefas que o Analyzer acha que não estão configuradas corretamente para builds incrementais.

Quando você clica em um nó filho, o Analyzer descreve a natureza do aviso e as possíveis etapas para resolver o problema. Além disso, se a tarefa pertencer a um plug-in aplicado ao projeto, o analisador fornecerá um link Generate report, conforme mostrado na figura 3.

Figura 3. Informações detalhadas sobre os avisos do Build Analyzer.

Quando você clica no link Gerar relatório, uma caixa de diálogo é exibida com mais informações que podem ajudar o desenvolvedor do plug-in a resolver o problema em uma nova versão do plug-in. Você pode clicar em Copy para salvar o texto na área de transferência e colar as informações em um relatório de bug para o desenvolvedor do plug-in.