Android 建構效能

回報問題 查看原始碼 。 。 。 。 夜間。 。 7.37.2 。 。 7.1 。 。 7.0 。 。 6.5

本頁資訊說明如何最佳化 Android 建構效能 應用程式。如要瞭解如何使用 Bazel 進行一般建構效能最佳化,請參閱 最佳化成效

標記位於 bazelrc 設定語法,因此 可直接貼到 bazelrc 檔案中 --config=<configuration_name>

剖析效能

Bazel 預設會將 JSON 追蹤記錄設定檔寫入名為 command.profile.gz。 如需相關資訊,請參閱 JSON 設定檔說明文件 如何閱讀個人資料及進行互動。

Android 建構動作的永久工作站

部分 Android 建構動作支援 永久性工作站

這些動作助憶鍵如下:

  • DexBuilder
  • JavaC
  • 脫糖
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

啟用工作站可以節省 JVM 成本,進而改善建構效能 叫用這些工具時所需的新創公司成本,但可能會增加 記憶體用量。

如要為這些動作啟用 worker,請套用這些標記: --config=android_workers

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

每項動作預設的永久工作站數量為 4 個。我們 測得的建構效能提升幅度 將每個動作的執行個體數量限制為 12,不過 可能會因 Bazel 的執行端系統和執行中的專案而異 。

如要限制動作的執行個體數量,請套用以下標記:

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

aapt2 已大幅提升 相較於 aapt 的效能,還能建立較小的 APK如要使用「aapt2」,請使用 --android_aapt=aapt2 標記或設定 aapt2 上的 aapt_version android_binaryandroid_local_test

SSD 最佳化

--experimental_multi_threaded_digest 旗標適用於最佳化摘要 運算能力