Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Memecahkan masalah performa build

Di Android Studio 4.0 dan lebih baru dengan plugin Android Gradle 4.0.0 dan lebih baru, Anda dapat menggunakan Build Analyzer untuk memeriksa performa build project Anda. Performa build mungkin dipengaruhi oleh beberapa faktor berbeda yang dapat berubah di antara build. Untuk setiap build yang Anda jalankan, Build Analyzer mencoba menyajikan informasi terpenting tentang setiap build, sehingga Anda dapat dengan cepat mengidentifikasi dan mengatasi regresi dalam performa build.

Halaman ini menyediakan ringkasan Build Analyzer, dan beberapa panduan menggunakan fitur ini untuk meningkatkan performa build project Anda. Jika Anda belum melakukannya, coba strategi tambahan untuk meningkatkan performa build dengan membaca Mengoptimalkan kecepatan build.

Data yang disajikan analyzer berubah berdasarkan setiap build. Khususnya dengan build yang besar dan kompleks, banyak faktor dapat berubah antar-build, yang mengubah data yang ditampilkan analyzer kepada Anda sebagai faktor penting dalam durasi build. Jadi, ada baiknya jika Anda mem-build project beberapa kali dan membandingkan data dalam analyzer untuk mengidentifikasi pola.

Mulai

Setiap kali Anda membuat aplikasi, Build Analyzer akan membuat laporan dan menampilkan data dari laporan terbaru di jendela Build. Untuk memulai, ikuti langkah berikut:

  1. Pastikan Anda menggunakan Android Studio versi terbaru dengan plugin Android Gradle 4.0.0 dan lebih baru.
  2. Jika Anda belum melakukannya, buat aplikasi dengan salah satu cara berikut:
    • Klik Build > Make Project dari panel menu.
    • Buat Android App Bundle atau APK dengan mengklik Build > Build Bundle(s) / APK(s) > Build Bundle(s) atau Build > Build Bundle(s) / APK(s) > Build APK(s) dari panel menu.
  3. Buka jendela Build dengan memilih View > Tool Windows > Tool Build dari panel menu.
  4. Di jendela Build, klik tab Build Analyzer untuk melihat laporan build di Build Analyzer.

Gambar 1. Build Analyzer menyediakan pengelompokan plugin yang paling bertanggung jawab atas durasi build.

Saat Anda membuka Build Analyzer, jendela akan menampilkan detail plugin yang paling berkontribusi pada durasi build, serta tampilan hierarki untuk membantu Anda mencari data berguna lainnya tentang build, seperti yang ditunjukkan pada gambar 1.

Penting untuk diperhatikan bahwa Build Analyzer tidak menampilkan data untuk semua tugas dalam build. Sebaliknya, berfokus pada tugas yang menentukan total durasi build Anda saja.

Tugas mana yang menentukan durasi build?

Gradle menentukan eksekusi tugas dengan interdependensi tugas, struktur project, dan beban CPU, serta menjalankan tugas secara berurutan atau paralel. Untuk build tertentu, Build Analyzer menandai kumpulan tugas yang dijalankan secara berurutan yang menentukan durasi build saat ini. Mengatasi inefisiensi pada tugas yang ditandai ini merupakan langkah awal paling baik untuk mengurangi waktu build secara keseluruhan.

Perlu diingat bahwa pada setiap build yang dijalankan, Anda mungkin melihat kumpulan tugas berbeda yang menentukan durasi build. Misalnya, jika Anda membuat perubahan pada konfigurasi build, jalankan build dengan kumpulan tugas yang berbeda (seperti build inkremental), atau jalankan build dalam batasan yang berbeda (misalnya, beban CPU yang lebih berat), jendela Build Speed mungkin menandai kumpulan tugas yang berbeda yang paling memengaruhi durasi build. Karena variabilitas ini, Anda mungkin ingin menggunakan jendela Build Speed di beberapa build untuk mengurangi durasi build secara konsisten.

Plugin dengan tugas yang menentukan durasi build

Saat Anda pertama kali membuka Build Analyzer setelah menyelesaikan build, jendela akan menampilkan data tentang plugin yang memperkenalkan tugas yang menentukan durasi build Anda, seperti yang ditunjukkan pada gambar 1. Di sebelah kanan, jendela ini menyediakan perincian visual dari plugin tersebut dan kontribusi relatifnya terhadap durasi build. Hal ini memungkinkan Anda mengidentifikasi plugin yang mungkin ingin Anda periksa terlebih dahulu.

Di panel kiri, Anda dapat memperluas node di samping Plugins with tasks determining the build's duration untuk melihat data lainnya yang telah dikumpulkan Build Analyzer untuk setiap plugin. Misalnya, setiap plugin menyertakan node turunan yang mengelompokkan tugas yang dijalankan Gradle selama build terakhir dan analyzer dianggap signifikan pada total durasi build. Setiap node menampilkan total waktu yang dibutuhkan untuk menjalankan turunan langsung dari node. Durasi ini dapat membantu Anda fokus pada pemeriksaan tugas dengan dampak tertinggi pada durasi build Anda.

Jika Build Analyzer menegaskan bahwa beberapa tugas dapat dikonfigurasi untuk berjalan lebih efisien, Pengelompokan Tugas tersebut akan dikelompokkan dalam node yang berlabel Warnings. Anda juga dapat memeriksa semua peringatan build dengan memperluas node Warnings tingkat atas di dekat bagian bawah panel kiri.

Tugas yang menentukan durasi build

Saat Anda memilih node Tasks determining this build's duration dari hierarki, Build Analyzer menampilkan pengelompokan visual tugas yang memiliki dampak terbesar pada durasi build. Artinya, node ini tidak mengelompokkan tugas berdasarkan plugin. Sebagai gantinya, Anda dapat menentukan peringkat setiap tugas berdasarkan waktu yang diperlukan untuk mengeksekusi.

Setiap tugas diberi kode warna sebagai berikut:

  • Merah Muda: Tugas termasuk dalam plugin Android Gradle, plugin Java Gradle, atau plugin Kotlin Gradle.
  • Biru: Tugas merupakan milik pihak ketiga atau plugin khusus. Misalnya, plugin yang mungkin telah Anda terapkan setelah membuat project baru menggunakan Android Studio.
  • Ungu: Tugas tidak termasuk dalam plugin, tetapi digunakan untuk mengubah properti project secara dinamis pada waktu proses. Misalnya, ini adalah tugas yang mungkin dapat Anda tentukan dalam file build.gradle.
  • Biru muda: Tugas, relatif terhadap tugas lain yang disorot oleh analyzer, tidak memiliki dampak yang tinggi pada durasi build.

Setelah memperluas node Tasks determining this build's duration, Anda dapat mengklik setiap tugas turunan untuk mempelajari eksekusinya lebih lanjut. Misalnya, analyzer memberikan detail tambahan seperti plugin induk, jenis tugas, tugas lain yang menyebabkan tugas ini berjalan, dan apakah tugas dijalankan secara bertahap, seperti yang ditunjukkan pada gambar 2. Analyzer juga akan meningkatkan peringatan yang dapat membantu Anda mengonfigurasi tugas untuk berjalan dengan lebih efisien.

Gambar 2. Build Analyzer yang menampilkan detail tentang eksekusi tugas tertentu.

Periksa peringatan

Build Analyzer memberikan peringatan saat mendeteksi tugas yang mungkin tidak dikonfigurasi untuk berjalan secara efisien. Misalnya, tugas yang tidak menggunakan Gradle API yang sesuai untuk menentukan input dan output tidak dapat memanfaatkan build inkremental. Jika build Anda menyertakan tugas tersebut, Build Analyzer mungkin menandainya dengan peringatan Always-run, karena harus dijalankan dengan setiap build, terlepas dari apakah inputnya berubah atau tidak.

Untuk melihat semua peringatan yang telah diidentifikasi penganalisis untuk build Anda, perluas node Warnings tingkat atas. Setelah meluaskan node, Anda dapat melihat peringatan yang dikelompokkan berdasarkan kategori. Misalnya, node Always-run mengelompokkan tugas yang menurut analyzer tidak dikonfigurasi dengan benar untuk build inkremental.

Saat Anda mengklik node turunan, analyzer menjelaskan sifat peringatan dan kemungkinan langkah yang dapat Anda ambil untuk menyelesaikan masalah. Selain itu, jika tugas termasuk dalam plugin yang Anda terapkan ke project, analyzer memberikan link Generate report, seperti yang ditunjukkan pada gambar 3.

Gambar 3. Informasi mendetail tentang peringatan Build Analyzer.

Saat Anda mengklik link Generate report, sebuah dialog akan muncul dengan informasi tambahan yang mungkin membantu developer plugin menyelesaikan masalah dalam plugin versi baru. Anda dapat mengeklik Copy untuk menyimpan teks ke papan klip agar lebih mudah menempelkan informasi ke dalam laporan bug ke developer plugin.