Performa Build Android

Halaman ini berisi informasi tentang cara mengoptimalkan performa build untuk aplikasi Android secara khusus. Untuk pengoptimalan performa build umum dengan Bazel, lihat Mengoptimalkan Performa.

Tanda ini berada dalam sintaksis konfigurasi bazelrc, sehingga dapat ditempelkan langsung ke file bazelrc dan dipanggil dengan --config=<configuration_name> pada command line.

Performa pembuatan profil

Bazel menulis profil rekaman aktivitas JSON secara default ke file bernama command.profile.gz di basis output Bazel. Lihat dokumentasi Profil JSON untuk mengetahui cara membaca dan berinteraksi dengan profil.

Pekerja persisten untuk tindakan build Android.

Subset tindakan build Android memiliki dukungan untuk pekerja persisten.

Mnemonik tindakan ini adalah:

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

Mengaktifkan pekerja dapat menghasilkan performa build yang lebih baik dengan menghemat biaya startup JVM jika tidak memanggil setiap alat ini, tetapi mengorbankan peningkatan penggunaan memori pada sistem dengan mempertahankannya.

Agar pekerja dapat melakukan tindakan ini, terapkan tanda ini dengan --config=android_workers pada command line:

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

Jumlah default pekerja persisten yang dibuat per tindakan adalah 4. Kami telah mengukur peningkatan performa build dengan membatasi jumlah instance untuk setiap tindakan ke 1 atau 2, meskipun hal ini dapat bervariasi bergantung pada sistem yang dijalankan Bazel dan project yang sedang di-build.

Untuk membatasi jumlah instance untuk suatu tindakan, terapkan tanda berikut:

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.

Menggunakan AAPT2

aapt2 telah meningkatkan performa dibandingkan aapt dan juga membuat APK yang lebih kecil. Untuk menggunakan aapt2, gunakan tanda --android_aapt=aapt2 atau tetapkan aapt2 pada aapt_version pada android_binary dan android_local_test.

Pengoptimalan SSD

Flag --experimental_multi_threaded_digest berguna untuk mengoptimalkan komputasi digest di SSD.