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.
Empfohlene Flags
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.