Android 建構效能

回報問題 查看來源 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

本頁提供相關資訊,說明如何專門針對 Android 應用程式最佳化建構效能。如要使用 Bazel 進行一般建構效能最佳化,請參閱「最佳化效能」。

這些旗標採用bazelrc 設定語法,因此可以直接貼到 bazelrc 檔案中,並在指令列上使用 --config=<configuration_name> 叫用。

分析效能

根據預設,Bazel 會將 JSON 追蹤設定檔寫入 Bazel 輸出基準中名為 command.profile.gz 的檔案。如要瞭解如何讀取及與設定檔互動,請參閱 JSON 設定檔說明文件

Android 建構動作的持續性工作站

部分 Android 建構動作支援持續性工作站

這些動作的助記符如下:

  • DexBuilder
  • Javac
  • Desugar
  • AaptPackage
  • AndroidResourceParser
  • AndroidResourceValidator
  • AndroidResourceCompiler
  • RClassGenerator
  • AndroidResourceLink
  • AndroidAapt2
  • AndroidAssetMerger
  • AndroidResourceMerger
  • AndroidCompiledResourceMerger

啟用工作人員可節省叫用各項工具時的 JVM 啟動成本,藉此提升建構效能,但系統會保留這些工具,因此記憶體用量會增加。

如要為這些動作啟用工作人員,請在指令列使用 --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 旗標,或在 aapt_version 上設定 aapt2 (適用於 android_binaryandroid_local_test)。

SSD 最佳化

--experimental_multi_threaded_digest 標記有助於最佳化 SSD 上的摘要計算。