Plugin Android Gradle 4.2.0 (Maret 2021)

Kompatibilitas

Versi minimum Versi default Catatan
Gradle 6.7.1 T/A Untuk mempelajari lebih lanjut, lihat mengupdate Gradle.
SDK Build Tools 30.0.2 30.0.2 Instal atau konfigurasi SDK Build Tools.
NDK T/A 21.4.7075529 Instal atau konfigurasi versi lain dari NDK.

Fitur baru

Versi plugin Android Gradle ini menyertakan fitur baru berikut.

Bahasa Java versi 8 secara default

Mulai versi 4.2, AGP akan menggunakan level bahasa Java 8 secara default. Java 8 menyediakan akses ke sejumlah fitur bahasa baru, termasuk ekspresi lambda, referensi metode, dan metode antarmuka statis. Untuk daftar lengkap tentang fitur yang didukung, lihat dokumentasi Java 8.

Untuk mempertahankan perilaku lama, tentukan Java 7 secara eksplisit dalam file build.gradle.kts atau build.gradle tingkat modul:

// build.gradle
android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}
// build.gradle.kts
android {
  ...
  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

Compiler resource JVM baru

Compiler resource JVM baru di alat plugin Android Gradle 4.2 menggantikan bagian compiler resource AAPT2, yang berpotensi meningkatkan performa build, terutama di komputer Windows. JVM baru compiler resource diaktifkan secara default.

Penandatanganan v3 dan v4 kini didukung

Plugin Android Gradle 4.2 kini mendukung format penandatanganan APK v3 dan APK v4. Untuk mengaktifkan salah satu atau kedua format tersebut di tambahkan properti berikut ke build.gradle level modul atau file build.gradle.kts:

// build.gradle
android {
  ...
  signingConfigs {
    config {
        ...
        enableV3Signing true
        enableV4Signing true
    }
  }
}
// build.gradle.kts
android {
  ...
  signingConfigs {
      config {
          ...
          enableV3Signing = true
          enableV4Signing = true
      }
  }
}

Penandatanganan APK v4 memungkinkan Anda men-deploy APK berukuran besar dengan cepat menggunakan ADB Penginstalan APK inkremental di Android 11. Tanda baru ini menangani langkah penandatanganan APK dalam deployment {i>checkout<i}.

Mengonfigurasi penandatanganan aplikasi per varian

Sekarang Anda dapat mengaktifkan atau menonaktifkan penandatanganan aplikasi di Android Gradle plugin per varian.

Contoh ini menunjukkan cara menetapkan penandatanganan aplikasi per varian menggunakan metode onVariants() di Kotlin atau Groovy:

androidComponents {
    onVariants(selector().withName("fooDebug"), {
        signingConfig.enableV1Signing.set(false)
        signingConfig.enableV2Signing.set(true)
    })

Properti Gradle baru: android.native.buildOutput

Untuk mengurangi ketidakjelasan pada output build, AGP 4.2 memfilter pesan dari build native yang menggunakan CMake dan ndk-build, yang hanya menampilkan output compiler C/C++ secara default. Sebelumnya, satu baris output dihasilkan untuk setiap file yang dibuat, sehingga menghasilkan pesan informasi dalam jumlah besar.

Jika Anda ingin melihat keseluruhan output native, setel Properti Gradle android.native.buildOutput menjadi verbose.

Anda dapat menetapkan properti ini dalam file gradle.properties atau melalui command line.

gradle.properties
android.native.buildOutput=verbose

Command line
-Pandroid.native.buildOutput=verbose

Nilai default properti ini adalah quiet.

Perubahan perilaku untuk file gradle.properties

Mulai AGP 4.2, properti Gradle tidak dapat lagi diganti dari sub-proyek. Dengan kata lain, jika Anda mendeklarasikan properti dalam file gradle.properties dalam subproject, dan bukan project root, properti tersebut akan diabaikan.

Sebagai contoh, pada rilis sebelumnya, AGP akan membaca nilai dari <var>projectDir</var>/gradle.properties, <var>projectDir</var>/app/gradle.properties, <var>projectDir</var>/library/gradle.properties, dan sebagainya. Untuk modul aplikasi, jika properti Gradle yang sama ada di <var>projectDir</var>/gradle.properties dan <var>projectDir</var>/app/gradle.properties, nilai dari <var>projectDir</var>/app/gradle.properties akan diutamakan.

Di AGP 4.2, perilaku ini telah diubah, dan AGP tidak akan memuat nilai dari gradle.properties di subproject (mis., <var>projectDir</var>/app/gradle.properties). Perubahan ini mencerminkan perilaku Gradle baru dan dukungan cache konfigurasi

Untuk informasi selengkapnya tentang menyetel nilai dalam file gradle.properties, lihat dokumen Gradle.

Perubahan kompatibilitas dan konfigurasi Gradle

Saat dijalankan di Android Studio, alat build Gradle menggunakan JDK yang dipaketkan bersama Studio. Pada rilis sebelumnya, JDK 8 dipaketkan dengan Studio. Namun, dalam 4.2, JDK 11 kini dipaketkan sebagai gantinya. Saat digunakan untuk menjalankan Gradle, JDK baru yang dipaketkan dapat mengakibatkan beberapa inkompatibilitas atau memengaruhi performa JVM karena perubahan pada pembersih sampah. Masalah ini dijelaskan di bawah ini.

Catatan: Meskipun sebaiknya menjalankan Gradle dengan JDK 11, Anda dapat mengubah JDK yang digunakan untuk menjalankan Gradle dalam dialog Struktur Project. Mengubah setelan ini hanya akan mengubah JDK yang digunakan untuk menjalankan Gradle, dan tidak akan mengubah JDK yang digunakan untuk menjalankan Studio itu sendiri.

Kompatibilitas Studio dengan plugin Android Gradle (AGP)

Android Studio 4.2 dapat membuka project yang menggunakan AGP 3.1 dan yang lebih baru asalkan AGP menjalankan Gradle 4.8.1 dan yang lebih baru. Untuk informasi selengkapnya tentang kompatibilitas Gradle, lihat Mengupdate Gradle.

Mengoptimalkan build Gradle untuk JDK 11

Update untuk JDK 11 ini memengaruhi konfigurasi default pembersih sampah memori JVM, karena JDK 8 menggunakan pembersih sampah memori paralel, sementara JDK 11 menggunakan pembersih sampah G1.

Untuk meningkatkan performa build, sebaiknya menguji build Gradle dengan pembersih sampah memori paralel. Di gradle.properties tetapkan hal berikut:

org.gradle.jvmargs=-XX:+UseParallelGC

Jika ada opsi lain yang telah ditetapkan di kolom ini, tambahkan opsi baru:

org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC

Untuk mengukur kecepatan build dengan konfigurasi yang berbeda, lihat Membuat profil build Anda.

File DEX yang tidak dikompresi dalam APK jika minSdk = 28 atau lebih tinggi

AGP kini memaketkan file DEX yang tidak dikompresi di APK secara default jika minSdk = 28 atau lebih tinggi. Ini menyebabkan peningkatan ukuran APK, tetapi menghasilkan ukuran yang lebih kecil ukuran instalasi pada perangkat, dan ukuran download kurang lebih sama.

Untuk memaksa AGP mengemas file DEX yang dikompresi, Anda dapat menambahkan kode berikut ke file build.gradle:

android {
    packagingOptions {
        dex {
            useLegacyPackaging true
        }
    }
}

Menggunakan DSL untuk memaketkan library native terkompresi

Sebaiknya paketkan library native dalam bentuk yang tidak dikompresi, karena hal ini akan menghasilkan ukuran penginstalan aplikasi yang lebih kecil, ukuran download aplikasi yang lebih kecil, dan waktu pemuatan aplikasi yang lebih cepat bagi pengguna Anda. Namun, jika Anda ingin plugin Android Gradle memaketkan library native terkompresi saat membangun aplikasi, menyetel useLegacyPackaging ke true di file build.gradle aplikasi Anda:

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging true
        }
    }
}

Flag useLegacyPackaging menggantikan atribut manifes extractNativeLibs. Untuk mengetahui latar belakang selengkapnya, lihat catatan rilis Library native dikemas tanpa dikompresi secara default.