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 yang direkomendasikan
Flag tersebut berada dalam
sintaksis konfigurasi bazelrc
, sehingga
dapat ditempelkan langsung ke dalam file bazelrc
dan dipanggil dengan
--config=<configuration_name>
di command line.
Performa pembuatan profil
Bazel menulis profil rekaman aktivitas JSON secara default ke file bernama
command.profile.gz
di basis output Bazel.
Baca dokumentasi Profil JSON untuk mengetahui cara membaca dan berinteraksi dengan profil.
Pekerja persisten untuk tindakan build Android.
Subkumpulan tindakan build Android mendukung pekerja persisten.
Mnemonik tindakan ini adalah:
- DexBuilder
- Java
- Desugar
- PaketAapt
- AndroidResourceParser
- AndroidResourceValidator
- AndroidCompiler
- RClassGenerator
- LinkResourceAndroid
- AndroidAapt2
- Penggabung Aset Android
- AndroidResourceMerger
- AndroidCompiledResourceMerger
Mengaktifkan pekerja dapat menghasilkan performa build yang lebih baik dengan menghemat biaya pengaktifan JVM dari pemanggilan setiap alat ini, tetapi dengan mengorbankan peningkatan penggunaan memori pada sistem dengan mempertahankannya.
Guna memungkinkan pekerja untuk 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 performa build yang lebih baik
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 dibuat.
Untuk membatasi jumlah instance untuk tindakan, terapkan tanda 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
telah meningkatkan
performa dibandingkan 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
digest di SSD.