Android-Build-Leistung

Diese Seite enthält speziell Informationen zur Optimierung der Build-Leistung für Android-Apps. Allgemeine Informationen zur Optimierung der Build-Leistung mit Bazel finden Sie unter Leistung optimieren.

Die Flags befinden sich in der bazelrc-Konfigurationssyntax, sodass sie direkt in eine bazelrc-Datei eingefügt und mit --config=<configuration_name> für die Datei aufgerufen werden können. Befehlszeile.

Profiling-Leistung

Bazel schreibt ein JSON-Trace-Profil standardmäßig in eine Datei namens command.profile.gz in der Ausgabebasis von Bazel. Informationen zum Lesen und Interagieren mit dem Profil finden Sie in der JSON-Profil-Dokumentation.

Nichtflüchtige Worker für Android-Build-Aktionen.

Ein Teil der Android-Build-Aktionen unterstützt nichtflüchtige Worker.

Die folgenden Memonics dieser Aktionen sind:

  • Logo: DexBuilder
  • Javac
  • Deugar
  • Aapt-Paket
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink-
  • AndroidAapt2
  • Zusammenführung von Android-Assets
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

Die Aktivierung von Workern kann zu einer besseren Build-Leistung führen, da JVM-Startkosten durch den Aufruf jedes dieser Tools sparen. Allerdings steigt die Kosten für die erhöhte Speichernutzung auf dem System, da sie beibehalten werden.

Wenn Sie Worker für diese Aktionen aktivieren möchten, wenden Sie diese Flags mit --config=android_workers in der Befehlszeile an:

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

Die Standardanzahl der pro Aktion erstellten nichtflüchtigen Workern ist 4. Wir haben die Build-Leistung gemessen, indem wir die Anzahl der Instanzen für jede Aktion auf 1 oder 2 beschränkt haben. Dies kann jedoch je nach System variieren. Bazel wird ausgeführt und das Projekt wird erstellt.

Verwenden Sie die folgenden Flags, um die Anzahl der Instanzen für eine Aktion zu begrenzen:

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.

AAPT2 verwenden

aapt2 hat die Leistung gegenüber aapt verbessert und erstellt auch kleinere APKs. Verwenden Sie zur Verwendung von aapt2 das Flag --android_aapt=aapt2 oder legen Sie aapt2 für die aapt_version auf android_binary und android_local_test fest.

SSD-Optimierungen

Das Flag --experimental_multi_threaded_digest ist nützlich, um die Digest-Berechnung auf SSDs zu optimieren.