Halaman ini berisi informasi tentang pengoptimalan performa build untuk aplikasi Android secara khusus. Untuk pengoptimalan performa build umum dengan Bazel, lihat Mengoptimalkan Performa.
Flag yang direkomendasikan
Flag ada dalam
sintaksis konfigurasi bazelrc
, sehingga
dapat ditempelkan langsung ke file bazelrc
dan dipanggil dengan
--config=<configuration_name>
di command line.
Membuat profil performa
Secara default, Bazel menulis profil rekaman aktivitas JSON ke file bernama
command.profile.gz
di dasar output Bazel.
Lihat dokumentasi Profil JSON untuk mengetahui cara membaca dan berinteraksi dengan profil.
Pekerja persisten untuk tindakan build Android.
Sebagian tindakan build Android memiliki dukungan untuk pekerja persisten.
Mnemonic tindakan ini adalah:
- DexBuilder
- Javac
- Desugar
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Mengaktifkan pekerja 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 mempertahankan alat tersebut.
Untuk mengaktifkan pekerja 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 pekerja 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 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 meningkatkan
performa dibandingkan aapt
dan juga membuat APK yang lebih kecil. Untuk menggunakan aapt2
, gunakan
flag --android_aapt=aapt2
atau tetapkan aapt2
di aapt_version
pada
android_binary
dan android_local_test
.
Pengoptimalan SSD
Flag --experimental_multi_threaded_digest
berguna untuk mengoptimalkan komputasi ringkasan di SSD.