Performa Build Android

Laporkan masalah Lihat sumber Per Malam · 7,2 · 7,1 · 7,0 · 6,5 · 6,4

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

Penanda berada di kolom Sintaksis konfigurasi bazelrc, jadi keduanya dapat ditempelkan secara langsung ke dalam file bazelrc dan dipanggil dengan --config=<configuration_name> pada command line.

Performa pembuatan profil

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

Pekerja persisten untuk tindakan build Android.

Sebagian tindakan build Android memiliki dukungan untuk pekerja persisten.

Tindakan ini mnemonik adalah:

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

Mengaktifkan worker dapat menghasilkan performa build yang lebih baik dengan menghemat JVM biaya startup dari pemanggilan masing-masing alat ini, tetapi dengan biaya 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 worker persisten yang dibuat per tindakan adalah 4. Kita memiliki terukur, peningkatan performa build dengan membatasi jumlah instance untuk setiap tindakan menjadi 1 atau 2, meskipun dapat bervariasi tergantung pada sistem yang digunakan Bazel, dan proyek yang dibuat.

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 ditingkatkan performa pada aapt dan juga membuat APK yang lebih kecil. Untuk menggunakan aapt2, gunakan --android_aapt=aapt2 flag atau setel aapt2 pada aapt_version di android_binary dan android_local_test.

Pengoptimalan SSD

Flag --experimental_multi_threaded_digest berguna untuk mengoptimalkan ringkasan dan komputasi berperforma tinggi pada SSD.