Memecahkan masalah performa build dengan Build Analyzer

Gunakan Build Analyzer untuk memeriksa performa build project Anda. Untuk setiap build yang Anda jalankan, Build Analyzer mencoba menyajikan informasi yang paling penting sehingga Anda dapat dengan cepat mengidentifikasi dan mengatasi regresi dalam performa build.

Untuk mengetahui strategi tambahan dalam meningkatkan performa build, baca Mengoptimalkan kecepatan build.

Mulai

Setiap kali Anda mem-build aplikasi, Build Analyzer akan membuat laporan dan menampilkan data dari laporan terbaru di jendela Build.

Untuk memulai, ikuti langkah berikut:

  1. Jika Anda belum melakukannya, build aplikasi dengan salah satu cara berikut:
    • Klik Build > Make Project dari panel menu.
    • Untuk mem-build Android App Bundle atau APK, klik Build > Build Bundle(s) / APK(s) > Build Bundle(s) atau Build > Build Bundle(s) / APK > Build APK(s) dari panel menu.
  2. Untuk membuka jendela Build, pilih View > Tool Windows > Build dari panel menu.
  3. Untuk melihat laporan build di Build Analyzer, klik tab Build Analyzer di jendela Build.

Data yang disajikan oleh Build Analyzer dapat berubah di seluruh build, sehingga sebaiknya build project Anda beberapa kali dan bandingkan data untuk mengidentifikasi pola.

Melihat plugin dengan tugas yang menentukan durasi build

Saat Anda pertama kali membuka Build Analyzer setelah menyelesaikan build, jendela akan menampilkan ringkasan analisis build, seperti yang ditunjukkan pada gambar 1.

Gambar 1. Halaman ringkasan Build Analyzer memberikan ringkasan temuan.

Untuk melihat pengelompokkan plugin dengan tugas yang menentukan durasi build, klik Plugin dengan tugas yang memengaruhi durasi build di halaman ringkasan. Anda juga dapat memilih Tasks dari dropdown dan mengonfirmasi bahwa Anda mengelompokkan berdasarkan plugin. Grafik ini mengurutkan plugin dan tugas terkaitnya berdasarkan total waktu yang diperlukan untuk menyelesaikannya.

Gambar 2. Build Analyzer menyediakan pengelompokan plugin yang memengaruhi durasi build.

Melihat tugas yang menentukan durasi build

Untuk melihat pengelompokkan tugas yang berkontribusi pada durasi build, klik Tasks impacted build duration di halaman ringkasan, atau pilih Tasks dari menu dropdown. Jika project Anda menggunakan AGP 8.0 atau yang lebih tinggi, tugas akan dikelompokkan menurut kategori secara default, sehingga lebih mudah untuk mengidentifikasi area yang memengaruhi durasi build. Klik setiap tugas turunan untuk mempelajari eksekusinya lebih lanjut.

Gambar 3. Build Analyzer menyediakan pengelompokan tugas yang paling andal terhadap durasi build.

Memeriksa peringatan

Jika Build Analyzer mendeteksi bahwa beberapa tugas dapat dikonfigurasi untuk dijalankan secara lebih efisien, fitur ini akan memberikan peringatan. Untuk melihat semua peringatan yang telah diidentifikasi Build Analyzer untuk build Anda, klik All warnings pada halaman ringkasan, atau pilih Warnings dari menu dropdown.

Beberapa peringatan memiliki link Buat laporan, seperti yang ditunjukkan dalam gambar 4. Saat Anda mengklik link Generate report, sebuah dialog akan muncul dengan informasi tambahan yang mungkin membantu developer plugin menyelesaikan masalah di plugin versi baru. Klik Salin untuk menyimpan teks ke papan klip agar lebih mudah menempelkan informasi ke dalam laporan bug ke developer plugin.

Gambar 4. Informasi lengkap tentang peringatan Build Analyzer.

Jenis peringatan

Build Analyzer melaporkan jenis peringatan berikut:

  • Always run tasks: Tugas yang selalu berjalan akan membuat tugas lain berjalan di setiap build, yang sebenarnya tidak diperlukan. Ada dua alasan utama mengapa Anda melihat peringatan ini:

    • (Lebih umum) Anda tidak mendeklarasikan input dan output tugas dengan benar. Jika demikian, Anda harus mendeklarasikan input dan output tugas Anda dengan benar. Artinya, Anda harus mendeklarasikan input dan output sendiri, atau mengubah versi plugin jika tugas yang memicu peringatan berasal dari plugin pihak ketiga.

    • (Kurang umum) Tugas memiliki upToDateWhen yang disetel ke salah (false), yang seharusnya dihindari. Mungkin ada beberapa logika yang bernilai salah (false) atau upToDateWhen di-hardcode agar menjadi salah (false). Jika ada logika yang bernilai salah (false), hasil ini mungkin disengaja, dan Anda dapat memilih untuk mengabaikan peringatan tersebut. Jika upToDateWhen di-hardcode agar menjadi salah (false), Anda harus menghapus hardcode dari kode Anda.

  • Task setup issues: Peringatan ini dibuat untuk tugas yang mendeklarasikan direktori yang sama sebagai output. Artinya, output tugas tersebut kemungkinan besar tidak dipertahankan di antara build dan tugas tersebut selalu berjalan, meskipun tidak ada perubahan. Untuk mengatasi peringatan ini, Anda harus mendeklarasikan direktori output yang berbeda untuk tugas Anda. Artinya, Anda harus mendeklarasikan sendiri direktori output yang berbeda jika bisa atau mengubah versi plugin jika tugas yang memicu peringatan berasal dari plugin pihak ketiga.

  • Pemroses anotasi non-inkremental: Peringatan ini dibuat ketika pemroses anotasi bersifat non-inkremental dan menyebabkan tugas JavaCompile selalu berjalan secara non-inkremental. Untuk mengatasi peringatan ini, beralihlah ke pemroses anotasi inkremental.

  • Configuration cache: Peringatan ini ditampilkan jika proses cache konfigurasi tidak diaktifkan untuk project Anda. Build Analyzer mempelajari urutan build untuk memeriksa apakah project Anda kompatibel dengan proses cache konfigurasi. Jika pemeriksaan kompatibilitas berhasil, Anda dapat mengaktifkan proses konfigurasi cache dari Build Analyzer.

  • Check Jetifier: Peringatan ini ditampilkan jika tanda enableJetifier ada dan diaktifkan dalam project Anda; yaitu jika Anda memiliki android.enableJetifier=true dalam file gradle.properties. Build Analyzer dapat melakukan pemeriksaan untuk melihat apakah tanda tersebut dapat dihapus dengan aman agar project Anda memiliki performa build yang lebih baik dan bermigrasi dari Android Support library yang tidak dikelola.

Memeriksa dampak download

Build Analyzer memberikan ringkasan waktu yang dihabiskan untuk mendownload dependensi dan gambaran yang mendetail tentang download per repositori. Untuk memeriksa dampak download, pilih Downloads dari menu dropdown. Info ini juga tersedia di jendela Sync.

Anda dapat menggunakan informasi ini untuk menentukan apakah download dependensi yang tidak terduga berdampak negatif terhadap performa build Anda. Hal ini sangat penting selama build inkremental, yang seharusnya tidak mendownload artefak secara konsisten.

Secara khusus, Anda dapat menggunakan informasi ini untuk mengidentifikasi masalah konfigurasi, seperti penggunaan versi dinamis dependensi yang menyebabkan download yang tidak terduga. Selain itu, jika Anda melihat banyak permintaan yang gagal untuk repositori tertentu, hal ini dapat menunjukkan bahwa repositori harus dihapus atau dipindahkan lebih rendah dalam konfigurasi repositori Anda.

Gambar 5. Build Analyzer menunjukkan dampak download pada durasi build.

[Khusus Windows] Memeriksa dampak software antivirus

Build Analyzer memberi tahu Anda jika software antivirus mungkin memengaruhi performa build. Hal ini dapat terjadi jika software antivirus, seperti Windows Defender, melakukan pemindaian real-time pada direktori yang digunakan oleh Gradle. Build Analyzer merekomendasikan daftar direktori yang akan dikecualikan dari pemindaian aktif dan, jika memungkinkan, akan menawarkan link untuk menambahkannya ke daftar pengecualian folder Windows Defender.