Esta página contém informações sobre como otimizar especificamente o desempenho do build para apps Android. Para ver uma otimização geral da performance do build com o Bazel, consulte Como otimizar o desempenho.
Sinalizações recomendadas
As sinalizações estão na sintaxe de configuração do bazelrc
para que possam ser coladas diretamente em um arquivo bazelrc
e invocadas com --config=<configuration_name>
na linha de comando.
Como criar perfis de desempenho
Por padrão, o Bazel grava um perfil de rastro JSON em um arquivo chamado command.profile.gz
na base de saída do Bazel.
Consulte a documentação do perfil JSON para saber como ler e interagir com ele.
Persistent workers para ações de compilação do Android.
Um subconjunto de ações de versão do Android tem suporte a workers permanentes.
As mneumônicas dessas ações são:
- Criador dex
- JavaC
- Açúcar
- Pacote Aapt
- Analisador de recursos Android
- ValidadordeAndroidResource
- AndroidResourceCompiler.
- Gerador de classes RClass
- Link do AndroidResource
- AndroidAapt2
- Mescla de recursos do Android
- Mescla de recursos do Android
- AndroidCompiledResourceMerger.
A ativação de workers pode resultar em um melhor desempenho de compilação, reduzindo os custos de inicialização da JVM invocando cada uma dessas ferramentas, mas com o custo de aumento do uso da memória no sistema ao mantê-las.
Para ativar workers para essas ações, aplique essas sinalizações com --config=android_workers
na linha de comando:
build:android_workers --strategy=DexBuilder=worker
build:android_workers --strategy=Javac=worker
build:android_workers --strategy=Desugar=worker
# A wrapper flag for these resource processing actions:
# - AndroidResourceParser
# - AndroidResourceValidator
# - AndroidResourceCompiler
# - RClassGenerator
# - AndroidResourceLink
# - AndroidAapt2
# - AndroidAssetMerger
# - AndroidResourceMerger
# - AndroidCompiledResourceMerger
build:android_workers --persistent_android_resource_processor
O número padrão de workers permanentes criados por ação é 4
. Nós medimos a melhoria do desempenho do build ao limitar o número de instâncias a cada ação a 1
ou 2
, embora isso possa variar de acordo com o sistema em que o Bazel está sendo executado e o projeto que está sendo criado.
Para limitar o número de instâncias de uma ação, aplique estas sinalizações:
build:android_workers --worker_max_instances=DexBuilder=2
build:android_workers --worker_max_instances=Javac=2
build:android_workers --worker_max_instances=Desugar=2
build:android_workers --worker_max_instances=AaptPackage=2
# .. and so on for each action you're interested in.
Como usar o AAPT2
O aapt2
melhorou
o desempenho em relação à aapt
e também cria APKs menores. Para usar aapt2
, use a sinalização
--android_aapt=aapt2
ou defina aapt2
na aapt_version
em
android_binary
e android_local_test
.
Otimizações de SSD
A sinalização --experimental_multi_threaded_digest
é útil para otimizar a computação
de resumo em SSDs.