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 mengetahui daftar lengkap fitur yang didukung, lihat dokumentasi Java 8.
Untuk mempertahankan perilaku lama, tentukan Java 7 secara eksplisit dalam file
build.gradle.kts
atau build.gradle
level 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. Compiler resource JVM baru 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 ini di
build Anda, tambahkan properti berikut ke file build.gradle
atau build.gradle.kts
level modul:
// 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 besar dengan cepat menggunakan penginstalan APK Inkremental ADB di Android 11. Flag baru ini menangani langkah penandatanganan APK dalam proses deployment.
Mengonfigurasi penandatanganan aplikasi per varian
Sekarang Anda dapat mengaktifkan atau menonaktifkan penandatanganan aplikasi di plugin Android Gradle 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 kekacauan dalam 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, tetapkan
properti Gradle baru android.native.buildOutput
ke verbose
.
Anda dapat menetapkan properti ini di 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 dari AGP 4.2, properti Gradle tidak dapat lagi diganti
dari subproject. Dengan kata lain, jika Anda mendeklarasikan properti dalam file gradle.properties
di subproject, bukan project root, properti tersebut akan diabaikan.
Sebagai contoh, dalam rilis sebelumnya, AGP akan membaca nilai dari
<var>projectDir</var>/gradle.properties
,
<var>projectDir</var>/app/gradle.properties
,
<var>projectDir</var>/library/gradle.properties
,
dll. 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 diprioritaskan.
Di AGP 4.2, perilaku ini telah diubah, dan AGP tidak akan memuat nilai dari
gradle.properties
dalam subproject (mis.,
<var>projectDir</var>/app/gradle.properties
).
Perubahan ini mencerminkan
perilaku Gradle baru dan mendukung
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 kami merekomendasikan untuk menjalankan Gradle dengan JDK 11, Anda dapat mengubah JDK yang digunakan untuk menjalankan Gradle pada dialog Project Structure. 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 tinggi. Untuk mengetahui 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, sedangkan JDK 11 menggunakan pembersih sampah memori G1.
Untuk meningkatkan performa build, sebaiknya
uji build Gradle Anda 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.
File DEX tidak dikompresi dalam APK jika minSdk
= 28 atau yang lebih tinggi
Secara default, AGP mengemas file DEX tanpa dikompresi dalam APK saat minSdk
= 28 atau
lebih tinggi. Hal ini menyebabkan peningkatan ukuran APK, tetapi akibatnya ukuran penginstalan di perangkat menjadi lebih kecil, dan ukuran download kurang lebih sama.
Untuk memaksa AGP memaketkan 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. Namun, jika Anda ingin agar plugin Android Gradle
memaketkan library native yang dikompresi saat mem-build aplikasi, tetapkan
useLegacyPackaging
ke true
dalam file build.gradle
aplikasi:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
Flag useLegacyPackaging
menggantikan atribut manifes extractNativeLibs
. Untuk informasi selengkapnya, lihat catatan rilis
Library native yang dikemas tanpa dikompresi secara default.