Rendimiento de la compilación de Android

Informar un problema Ver fuente Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

Esta página contiene información sobre cómo optimizar el rendimiento de compilación para Android en aplicaciones web específicamente. Para obtener información sobre la optimización general del rendimiento de compilación con Bazel, consulta Optimización del rendimiento.

Las banderas están en Sintaxis de configuración de bazelrc, por lo que se pueden pegar directamente en un archivo bazelrc e invocarse 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 JSON para obtener cómo leer e interactuar con el perfil.

Trabajadores persistentes para acciones de compilación de Android.

Un subconjunto de acciones de compilación de Android admite lo siguiente: trabajadores persistentes.

Estas acciones mnemónicos son:

  • DexBuilder
  • Java
  • Expansión de sintaxis
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

La habilitación de trabajadores puede mejorar el rendimiento de compilación si se ahorra en JVM costos de las startups por invocar cada una de estas herramientas, pero a costa de un aumento de uso de memoria en el sistema mediante su persistencia.

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. Tenemos del rendimiento de compilación mejorado limitando el número de instancias para cada acción a 1 o 2, aunque este puede variar según el sistema en el que se ejecute Bazel y el proyecto que construyen.

Para limitar el número 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ó rendimiento durante aapt y crea APK más pequeños. Para usar aapt2, utiliza la Marca --android_aapt=aapt2 o configura aapt2 en aapt_version el android_binary y android_local_test.

Optimizaciones de SSD

La marca --experimental_multi_threaded_digest es útil para optimizar el resumen. el procesamiento en SSD.