Halaman ini berisi informasi tentang cara mengoptimalkan performa build untuk aplikasi Android secara khusus. Untuk pengoptimalan performa build umum dengan Bazel, lihat Mengoptimalkan Performa.
Flag yang direkomendasikan
Flag berada dalam sintaksis konfigurasi
bazelrc, sehingga
dapat ditempel langsung ke dalam file bazelrc dan dipanggil dengan
--config=<configuration_name> di command line.
Membuat profil performa
Secara default, Bazel menulis profil pelacakan JSON ke file bernama command.profile.gz di basis output Bazel.
Lihat dokumentasi Profil JSON untuk
mengetahui cara membaca dan berinteraksi dengan profil.
Worker persisten untuk tindakan build Android.
Subset tindakan build Android memiliki dukungan untuk worker persisten.
Mnemonik tindakan ini adalah:
- DexBuilder
- Javac
- Desugar
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Mengaktifkan worker dapat menghasilkan performa build yang lebih baik dengan menghemat biaya startup JVM dari pemanggilan setiap alat ini, tetapi dengan biaya peningkatan penggunaan memori pada sistem dengan mempertahankannya.
Untuk mengaktifkan worker untuk tindakan ini, terapkan flag ini dengan --config=android_workers di 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. Kami telah
mengukur peningkatan performa build
dengan membatasi jumlah instance untuk setiap tindakan menjadi 1 atau 2, meskipun hal ini
dapat bervariasi bergantung pada sistem tempat Bazel berjalan, dan project yang sedang
dibuat.
Untuk membatasi jumlah instance untuk suatu tindakan, terapkan flag ini:
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 memiliki performa yang lebih baik daripada aapt dan juga membuat APK yang lebih kecil. Untuk menggunakan aapt2, gunakan flag
--android_aapt=aapt2 atau tetapkan aapt2 pada aapt_version di
android_binary dan android_local_test.
Pengoptimalan SSD
Flag --experimental_multi_threaded_digest berguna untuk mengoptimalkan komputasi ringkasan di SSD.