En esta página, se incluye información para optimizar el rendimiento de la compilación de apps para Android específicamente. Para obtener información general sobre la optimización del rendimiento de la compilación con Bazel, consulta Optimización del rendimiento.
Marcas recomendadas
Las marcas están en la
bazelrc sintaxis de configuración, por lo
que se pueden pegar directamente en un archivo bazelrc y se pueden invocar con
--config=<configuration_name> en la línea de comandos.
Generación de perfiles de rendimiento
De forma predeterminada, Bazel escribe un perfil de seguimiento JSON en un archivo llamado command.profile.gz en la base de salida de Bazel.
Consulta la documentación del perfil JSON para obtener información sobre
cómo leer el perfil y cómo interactuar con él.
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 los siguientes:
- DexBuilder
- Javac
- Desugar
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Habilitar trabajadores puede mejorar el rendimiento de la compilación, ya que se ahorran los costos de inicio de JVM cuando se invoca cada una de estas herramientas, pero a costa de un mayor uso de memoria en el sistema cuando se conservan.
Para 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 creados por acción es 4. Hemos
medido un mejor rendimiento de la compilación
limitando la cantidad de instancias para 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 está
compilando.
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.
Usa AAPT2
aapt2 mejoró el rendimiento en comparación con aapt y también crea APKs más pequeños. Para usar aapt2, usa la
--android_aapt=aapt2 marca o establece aapt2 en el aapt_version en
android_binary y android_local_test.
Optimizaciones de SSD
La marca --experimental_multi_threaded_digest es útil para optimizar el cálculo de resúmenes en SSDs.