Halaman ini berisi informasi tentang cara mengoptimalkan performa build untuk Android aplikasi tertentu. Untuk pengoptimalan performa build umum dengan Bazel, lihat Mengoptimalkan Performa.
Tanda yang direkomendasikan
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 rekaman aktivitas 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 yang timbul 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.