Plugin Android Gradle 3.3.0 (Januari 2019)

Versi plugin Android ini perlu beberapa hal berikut:

3.3.3 (Juli 2020)

Update minor ini mendukung kompatibilitas dengan setelan default baru dan fitur untuk visibilitas paket di Android 11.

Lihat catatan rilis 4.0.1 untuk detailnya.

3.3.2 (Maret 2019)

Update minor ini mendukung Android Studio 3.3.2 dan menyertakan berbagai perbaikan bug dan peningkatan performa. Untuk melihat daftar perbaikan bug penting, baca postingan blog tentang Rilis Update.

3.3.1 (Februari 2019)

Update minor ini mendukung Android Studio 3.3.1 dan menyertakan berbagai perbaikan bug dan peningkatan performa.

Fitur baru

  • Sinkronisasi classpath yang lebih baik: Saat menyelesaikan dependensi pada classpath runtime dan classpath waktu kompilasi, plugin Android Gradle mencoba memperbaiki konflik versi downstream tertentu untuk dependensi yang muncul di beberapa classpath.

    Misalnya, jika classpath runtime menyertakan Library A versi 2.0 dan classpath kompilasi menyertakan Library A versi 1.0, plugin akan otomatis mengupdate dependensi pada classpath kompilasi ke Library A versi 2.0 untuk menghindari error.

    Namun, jika classpath runtime menyertakan Library A versi 1.0 dan classpath kompilasi menyertakan Library A versi 2.0, plugin tidak akan mendowngrade dependensi pada classpath kompilasi ke Library A versi 1.0, dan Anda akan mengalami error. Untuk mempelajari lebih lanjut, lihat Memperbaiki konflik antara classpath.

  • Perbaikan kompilasi Java inkremental saat menggunakan pemroses anotasi: Update ini mengurangi waktu build dengan meningkatkan kualitas dukungannya untuk kompilasi Java inkremental saat menggunakan pemroses anotasi.

    Catatan: Fitur ini kompatibel dengan Gradle 4.10.1 dan yang lebih baru, kecuali Gradle 5.1 karena adanya masalah Gradle 8194.

    • Untuk project yang menggunakan Kapt (kebanyakan project khusus Kotlin dan project campuran Kotlin-Java): Kompilasi Java inkremental diaktifkan, sekalipun Anda menggunakan data binding atau plugin retro-lambda. Pemrosesan anotasi oleh tugas Kapt belum inkremental.

    • Untuk project yang tidak menggunakan Kapt (project khusus Java): Jika pemroses anotasi yang Anda gunakan semuanya mendukung pemrosesan anotasi inkremental, maka kompilasi Java inkremental akan diaktifkan secara default. Untuk memantau adopsi pemroses anotasi inkremental, lihat Masalah Gradle 5277.

      Namun, jika satu atau beberapa pemroses anotasi tidak mendukung build inkremental, kompilasi Java inkremental tidak akan diaktifkan. Sebagai gantinya, Anda dapat menyertakan flag berikut dalam file gradle.properties:

      android.enableSeparateAnnotationProcessing=true
                  

      Jika flag ini Anda sertakan, plugin Android Gradle akan menjalankan pemroses anotasi dalam tugas terpisah dan memungkinkan tugas kompilasi Java berjalan secara inkremental.

  • Info debug yang lebih baik saat menggunakan API usang: Jika plugin mendeteksi Anda menggunakan API yang tidak lagi didukung, sekarang plugin dapat memberikan informasi yang lebih mendetail untuk membantu Anda menentukan tempat API tersebut digunakan. Untuk melihat info tambahan, Anda perlu menyertakan baris berikut dalam file gradle.properties project Anda:

              android.debug.obsoleteApi=true
            

    Anda juga dapat mengaktifkan flag ini dengan meneruskan -Pandroid.debug.obsoleteApi=true dari command line.

  • Anda dapat menjalankan uji instrumentasi pada modul fitur dari command line.

Perubahan perilaku

  • Konfigurasi tugas yang kurang penting: Sekarang plugin menggunakan API pembuatan tugas baru dari Gradle untuk menghindari inisialisasi dan konfigurasi tugas-tugas yang tidak diperlukan untuk menyelesaikan build saat ini (atau tugas-tugas yang tidak ada di grafik tugas eksekusi). Misalnya, jika Anda memiliki beberapa varian build, seperti varian build "rilis" dan "debug", dan membuat versi "debug" aplikasi, plugin akan menghindari inisialisasi dan konfigurasi tugas untuk versi "rilis" aplikasi Anda.

    Memanggil metode lama tertentu dalam Variants API, misalnya variant.getJavaCompile(), mungkin masih akan memaksakan konfigurasi tugas. Guna memastikan build Anda dioptimalkan untuk konfigurasi tugas yang kurang penting, panggil metode baru yang akan menampilkan objek TaskProvider, seperti variant.getJavaCompileProvider().

    Jika menjalankan tugas build kustom, pelajari cara beradaptasi dengan API pembuatan tugas baru dari Gradle.

  • Untuk jenis build tertentu, jika useProguard false ditetapkan, sekarang plugin akan menggunakan R8, bukan ProGuard, untuk menyingkat dan meng-obfuscate kode dan resource aplikasi Anda. Untuk mempelajari R8 lebih lanjut, baca postingan blog ini dari Blog Android Developer.

  • Pembuatan class R yang lebih cepat untuk project library: Sebelumnya, plugin Android Gradle akan menghasilkan file R.java untuk setiap dependensi project, lalu mengompilasi class R tersebut bersama class lain dalam aplikasi Anda. Sekarang plugin akan langsung membuat JAR yang berisi class R terkompilasi dari aplikasi Anda, tanpa terlebih dahulu membuat class R.java perantara. Pengoptimalan ini dapat meningkatkan performa build secara signifikan untuk project yang menyertakan banyak subproject dan dependensi library, serta meningkatkan kecepatan pengindeksan pada Android Studio.

  • Saat mem-build Android App Bundle, APK yang dihasilkan dari app bundle yang menargetkan Android 6.0 (API level 23) atau yang lebih baru kini menyertakan versi library native yang tidak dikompresi secara default. Dengan pengoptimalan ini, perangkat tidak perlu lagi membuat salinan library sehingga mengurangi ukuran aplikasi dalam disk. Jika ingin menonaktifkan pengoptimalan ini, tambahkan baris berikut ke file gradle.properties:

    android.bundle.enableUncompressedNativeLibs = false
            
  • Plugin ini menerapkan versi minimum beberapa plugin pihak ketiga.

  • Sinkronisasi project varian tunggal: Menyinkronkan project Anda dengan konfigurasi build merupakan langkah penting yang akan memungkinkan Android Studio memahami struktur project Anda. Namun, untuk project besar, proses ini dapat membutuhkan waktu lama. Jika project menggunakan berbagai varian build, kini Anda dapat mengoptimalkan sinkronisasi project dengan hanya membatasinya ke varian yang saat ini Anda pilih.

    Anda harus menggunakan Android Studio 3.3 atau yang lebih tinggi dengan Plugin Android Gradle 3.3.0 atau yang lebih tinggi untuk mengaktifkan pengoptimalan ini. Jika memenuhi persyaratan ini, IDE akan meminta Anda mengaktifkan pengoptimalan ini pada saat sinkronisasi project. Pengoptimalan juga diaktifkan secara default pada project baru.

    Untuk mengaktifkan pengoptimalan ini secara manual, klik File > Settings > Experimental > Gradle (Android Studio > Preferences > Experimental > Gradle di Mac), lalu centang kotak Only sync the active variant.

    Catatan: Pengoptimalan ini mendukung sepenuhnya project yang menggunakan bahasa Java dan C++, serta menyediakan dukungan untuk Kotlin. Jika Anda mengaktifkan pengoptimalan untuk project dengan konten Kotlin, sinkronisasi Gradle akan melakukan fallback untuk menggunakan varian lengkap secara internal.

  • Download otomatis paket SDK yang hilang: Fungsionalitas ini diperluas untuk mendukung NDK. Untuk mempelajari lebih lanjut, baca Mendownload otomatis paket yang tidak ditemukan dengan Gradle.

Perbaikan Bug

  • Plugin Android Gradle 3.3.0 memperbaiki masalah berikut:

    • Proses build yang memanggil android.support.v8.renderscript.RenderScript, alih-alih versi AndroidX, meskipun Jetifier diaktifkan
    • Error terjadi karena androidx-rs.jar menyertakan annotation.AnyRes yang dipaketkan secara statis
    • Saat menggunakan RenderScript, Anda tidak perlu lagi menetapkan versi Build Tools dalam file build.gradle secara manual