En esta página, se incluye información sobre cómo optimizar el rendimiento de la compilación específicamente para las apps para Android. Para la optimización general del rendimiento de compilación con Bazel, consulta Optimiza el rendimiento.
Marcas recomendadas
Las marcas se encuentran en la sintaxis de configuración bazelrc
, por lo que se pueden pegar directamente en un archivo bazelrc
y, luego, invocar con --config=<configuration_name>
en la línea de comandos.
Rendimiento de la generación de perfiles
Bazel escribe un perfil de seguimiento JSON de forma predeterminada en un archivo llamado
command.profile.gz
en la base de salida de Bazel.
Consulta la documentación del perfil de JSON para saber cómo leer y cómo interactuar con el perfil.
Trabajadores persistentes para acciones de compilación de Android.
Un subconjunto de acciones de compilación de Android admite trabajadores persistentes.
Los mnemónicos de estas acciones son:
- DexBuilder
- JavaC
- Desugar
- Paquete Aapt
- AndroidResourceParser
- Validador de recursos de Android
- Compilador de recursos de Android
- Clase R
- Vínculo de recurso de Android
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Habilitar a los trabajadores puede dar como resultado un mejor rendimiento de compilación, ya que ahorran costos de inicio de JVM a partir de la invocación de cada una de estas herramientas, pero a costa de un mayor uso de memoria en el sistema, ya que se conservan.
A fin de habilitar trabajadores para estas acciones, aplica estas marcas con --config=android_workers
en la línea de comandos:
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
La cantidad predeterminada de trabajadores persistentes que se creó por acción es de 4
. Para
medir el rendimiento de compilación mejorado, limitamos la cantidad de instancias de cada acción a 1
o 2
, aunque esto
puede variar según el sistema en el que se ejecuta Bazel y el proyecto
que se compila.
Para limitar la cantidad de instancias de una acción, aplica estas marcas:
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.
Cómo usar AAPT2
aapt2
mejoró el rendimiento en comparación con aapt
y también crea APK más pequeños. Para usar aapt2
, usa la marca --android_aapt=aapt2
o configura aapt2
en aapt_version
en android_binary
y android_local_test
.
Optimizaciones en SSD
La marca --experimental_multi_threaded_digest
es útil para optimizar el cálculo de los resúmenes en SSD.