Esta página contém informações sobre como otimizar o desempenho do build especificamente para apps Android. Para otimizar o desempenho geral de build com o Bazel, consulte Como otimizar o desempenho.
Sinalizações recomendadas
As sinalizações estão na sintaxe de configuração bazelrc
. Portanto, elas podem ser coladas diretamente em um arquivo bazelrc
e invocadas com --config=<configuration_name>
na linha de comando.
Desempenho da criação de perfil
Por padrão, o Bazel grava um perfil de rastreamento JSON em um arquivo chamado
command.profile.gz
na base de saída dele.
Consulte a documentação do perfil JSON para
saber como ler e interagir com o perfil.
Workers permanentes para ações de build do Android.
Um subconjunto de ações de build do Android oferece suporte para workers persistentes.
Os recursos mnemônicos dessas ações são:
- DexBuilder
- JavaC
- Deaçúcar
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
A ativação de workers pode resultar em melhor desempenho de build, economizando nos custos de inicialização do JVM com a invocação de cada uma dessas ferramentas, mas ao custo do aumento do uso de memória no sistema pela persistência.
Para ativar workers para essas ações, aplique estas 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 uma melhoria no desempenho do build
limitando o número de instâncias de cada ação a 1
ou 2
. No entanto, isso
pode variar dependendo do sistema em que o Bazel está sendo executado e do projeto que está sendo
criado.
Para limitar o número de instâncias de uma ação, aplique estas flags:
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 ao aapt
e também cria APKs menores. Para usar aapt2
, use a
flag --android_aapt=aapt2
ou defina aapt2
no 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.