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 yang lebih baru termasuk lambda ekspresi, referensi metode, dan metode antarmuka statis. Untuk daftar lengkap tentang fitur yang didukung, lihat dokumentasi Java 8.
Untuk mempertahankan perilaku lama, tetapkan Java 7 secara eksplisit di level modul
File build.gradle.kts
atau build.gradle
:
// 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, kemungkinan besar meningkatkan kinerja {i>build<i}, terutama pada komputer Windows. JVM baru compiler resource diaktifkan secara default.
Penandatanganan v3 dan v4 kini didukung
Plugin Android Gradle 4.2 kini mendukung APK v3
dan format penandatanganan 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 per varian.
Contoh ini menunjukkan cara menetapkan penandatanganan aplikasi per varian menggunakan
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
,
hanya menampilkan {i>output<i} compiler C/C++ secara {i>default<i}. Sebelumnya, baris output
dibuat untuk setiap file yang dibuat, menghasilkan sejumlah besar
pesan informasi.
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 sebuah subproject, bukan di root
proyek, atribut tersebut akan diabaikan.
Misalnya, 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 kedua
<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 mengetahui informasi selengkapnya tentang cara menetapkan nilai di 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, dapat mengubah JDK yang digunakan untuk menjalankan Gradle di Struktur Project dialog. 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 Android Plugin Gradle (AGP)
Android Studio 4.2 dapat membuka project yang menggunakan AGP 3.1 dan lebih tinggi asalkan AGP menjalankan Gradle 4.8.1 dan yang lebih tinggi. Untuk selengkapnya tentang kompatibilitas Gradle, lihat Mengupdate Gradle.
Mengoptimalkan build Gradle untuk JDK 11
Update untuk JDK 11 ini memengaruhi konfigurasi default sampah JVM , karena JDK 8 menggunakan pengumpul sampah paralel sementara JDK 11 menggunakan yang Pembersih sampah memori 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 berbagai konfigurasi, lihat Membuat profil build.
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 agar memaketkan file DEX yang dikompresi, Anda dapat menambahkan
berikut ke file build.gradle
Anda:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
Menggunakan DSL untuk memaketkan library native terkompresi
Kami menyarankan untuk mengemas library native dalam bentuk tidak terkompresi, karena ini
menghasilkan ukuran instal aplikasi yang lebih kecil, ukuran download aplikasi yang lebih kecil, dan aplikasi yang lebih cepat
untuk waktu pemuatan
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 informasi selengkapnya, lihat catatan rilis
Library native dikemas tanpa dikompresi secara default.