Plugin Android Gradle 8.0.0 merupakan rilis utama yang menyertakan berbagai peningkatan dan fitur baru.
Kompatibilitas
Versi minimum | Versi default | Catatan | |
---|---|---|---|
Gradle | 8.0 | 8.0 | Untuk mempelajari lebih lanjut, lihat mengupdate Gradle. |
SDK Build Tools | 30.0.3 | 30.0.3 | Instal atau konfigurasi SDK Build Tools. |
NDK | T/A | 25.1.8937393 | Instal atau konfigurasi versi lain dari NDK. |
JDK | 17 | 17 | Untuk mempelajari lebih lanjut, lihat menyetel versi JDK. |
Rilis patch
Berikut adalah daftar rilis patch untuk Plugin Android Gradle 8.0.
Plugin Android Gradle 8.0.2 (Mei 2023)
Untuk daftar bug yang diperbaiki di AGP 8.0.2, lihat Masalah yang ditutup Android Studio 2022.2.1.
Plugin Android Gradle 8.0.1 (Mei 2023)
Update minor ini mencakup perbaikan bug berikut:
Perbaikan masalah: | |
---|---|
Error: "No VersionRequirement with the given id in the table" setelah mengupgrade AGP 7.2.2 -> 7.4.0
|
|
R8 NullPointerException pada markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] Kegagalan verifikasi class berat di Android 11
|
Perubahan yang dapat menyebabkan gangguan: namespace diperlukan dalam skrip build level modul
Anda harus menetapkan namespace dalam file build.gradle.kts
level modul, bukan
file manifes. Anda dapat mulai menggunakan properti DSL namespace
yang dimulai dengan AGP 7.3. Untuk mempelajari lebih lanjut, lihat
Menetapkan namespace.
Saat bermigrasi ke DSL namespace, perhatikan masalah berikut:
- AGP versi sebelumnya menyimpulkan namespace pengujian dari namespace utama, atau
ID aplikasi, secara keliru dalam beberapa kasus. Upgrade Assistant AGP akan memblokir
upgrade jika menemukan bahwa namespace utama project dan namespace pengujian
Anda sama. Jika upgrade diblokir, Anda harus mengubah
testNamespace
dan mengubah kode sumber secara manual. - Setelah mengubah namespace pengujian, kode Anda mungkin akan dikompilasi,
tetapi pengujian berinstrumen gagal saat runtime. Hal ini dapat terjadi jika
kode sumber pengujian berinstrumen Anda mereferensikan resource yang ditentukan di
sumber
androidTest
dan aplikasi.
Untuk informasi selengkapnya, lihat masalah #191813691 komentar #19.
Perubahan yang dapat menyebabkan gangguan: nilai default opsi build
Mulai AGP 8.0, nilai default untuk flag ini telah diubah guna meningkatkan performa build. Untuk mendapatkan bantuan dalam menyesuaikan kode Anda agar mendukung beberapa perubahan ini, gunakan Upgrade Assistant AGP (Tools > AGP Upgrade Assistant). Upgrade Assistant akan memandu Anda mengupdate kode untuk mengakomodasi perilaku baru atau menyetel flag untuk mempertahankan perilaku sebelumnya.
Flag | Nilai default baru | Nilai default sebelumnya | Catatan |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 tidak menghasilkan BuildConfig secara default. Anda perlu menentukan opsi ini menggunakan DSL dalam project yang memerlukannya. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 tidak mengaktifkan dukungan AIDL secara default. Anda perlu menentukan opsi ini menggunakan DSL dalam project yang memerlukannya. Tanda ini akan dihapus di AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 tidak mengaktifkan dukungan RenderScript secara default. Anda perlu menentukan opsi ini menggunakan DSL dalam project yang memerlukannya. Flag ini akan dihapus di AGP 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 menghasilkan class R dengan kolom non-final secara
default. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 menghasilkan class R untuk resource yang ditentukan dalam
modul saat ini saja. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 mengaktifkan mode penuh R8 secara default. Untuk detail selengkapnya, lihat Mode lengkap R8. |
Perubahan yang dapat menyebabkan gangguan: nilai opsi build yang diterapkan
Mulai AGP 8.0, Anda tidak dapat lagi mengubah nilai untuk tanda ini. Jika
Anda menentukannya dalam file gradle.properties
, nilai ini akan diabaikan dan AGP
mencetak peringatan.
Flag | Nilai yang diterapkan | Catatan |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 memberikan peringatan jika mendeteksi resolusi konfigurasi selama fase konfigurasi karena berdampak negatif pada waktu konfigurasi Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 akan gagal membuat build yang menggunakan R8 jika ada class yang hilang untuk
memastikan pengoptimalan DEX yang lebih baik. Untuk mengatasinya, Anda perlu menambahkan
library yang hilang atau aturan keep -dontwarn . Untuk detail selengkapnya, lihat Peringatan class tidak ada dalam penyingkat R8. |
android.testConfig.useRelativePath |
true |
Saat dukungan untuk penggunaan resource, aset, dan manifes Android dalam
pengujian unit diaktifkan, AGP 8.0 akan menghasilkan
file test_config.properties yang hanya berisi jalur
relatif. Hal ini memastikan bahwa pengujian unit Android selalu bisa menggunakan cache build
Gradle. |
android.useNewJarCreator |
true |
AGP menggunakan library Zipflinger saat membuat file JAR untuk meningkatkan performa build. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Saat menambahkan informasi dependensi SDK di AAB dan APK diaktifkan, AGP 8.0 juga akan menambahkan daftar repositori project ke informasi ini. Untuk mempelajari lebih lanjut, lihat Informasi dependensi untuk Konsol Play. |
android.enableArtProfiles |
true |
Profil Dasar Pengukuran kini selalu dibuat. Lihat Profil Dasar Pengukuran untuk mengetahui detailnya. |
android.enableNewResourceShrinker |
true |
Gunakan penerapan shinker resource baru secara default. Penyingkat resource baru menyertakan dukungan untuk fitur dinamis. |
android.enableSourceSetPathsMap |
true |
Digunakan untuk menghitung pemetaan jalur resource relatif, sehingga build Gradle lebih sering diupdate. |
android.cacheCompileLibResources |
true |
Resource library yang dikompilasi kini dapat disimpan ke dalam cache secara default karena Gradle melacak file resource yang relatif terhadap lokasi project. Perlu
mengaktifkan android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 tidak membuat SoftwareComponent secara default. Sebagai gantinya, AGP membuat SoftwareComponents hanya untuk varian yang dikonfigurasi untuk dipublikasikan menggunakan DSL publikasi. |
Flag stabil baru untuk profil eksekusi
AGP menyertakan flag baru android.settings.executionProfile
. Gunakan tanda ini untuk
mengganti profil eksekusi default dari
SettingsExtension
.
Untuk mempelajari lebih lanjut, lihat dokumentasi plugin setelan.
Untuk melihat pratinjau tanda eksperimental, lihat catatan rilis pratinjau.
Penetapan properti lambat Kotlin tidak didukung
Jika Anda menggunakan DSL Kotlin Gradle untuk skrip build, perhatikan bahwa Android
Studio dan AGP 8.0 tidak mendukung penetapan properti eksperimental menggunakan
operator =
. Untuk informasi selengkapnya tentang fitur ini, lihat catatan rilis dan dokumentasi.
Kategori tugas Build Analyzer
Mulai Android Studio Flamingo, Build Analyzer memiliki tampilan default baru untuk tugas yang memengaruhi durasi build. Jika project Anda menggunakan AGP 8.0 atau yang lebih baru, bukan menampilkan tugas satu per satu, Build Analyzer akan mengelompokkannya berdasarkan kategori. Misalnya, tugas khusus untuk Resource Android, Kotlin, atau Dexing dikelompokkan bersama, lalu diurutkan berdasarkan durasi build. Hal ini memudahkan untuk mengetahui kategori apa yang memiliki dampak terbesar pada waktu build. Memperluas setiap kategori akan menampilkan daftar tugas yang sesuai. Untuk menampilkan tugas satu per satu, tanpa mengelompokkan, gunakan drop-down Group by.
Plugin setelan baru
AGP 8.0.0-alpha09 memperkenalkan plugin setelan baru. Dengan plugin setelan, Anda dapat memusatkan konfigurasi global, yaitu konfigurasi yang berlaku untuk semua modul, di satu tempat, sehingga Anda tidak perlu menyalin dan menempelkan konfigurasi dalam beberapa modul. Selain itu, Anda dapat menggunakan plugin setelan untuk membuat profil eksekusi alat, atau petunjuk berbeda tentang cara menjalankan alat, dan beralih di antaranya.
Untuk menggunakan plugin setelan, terapkan plugin di file settings.gradle
:
apply plugin 'com.android.settings'
Memusatkan konfigurasi global
Untuk mengonfigurasi konfigurasi global, gunakan blok android
baru dalam
file settings.gradle
. Berikut contohnya:
android {
compileSdk 31
minSdk 28
...
}
Profil eksekusi alat
Plugin setelan juga memungkinkan Anda membuat profil eksekusi untuk beberapa alat. Profil eksekusi menentukan cara alat dijalankan; Anda dapat memilih berbagai profil eksekusi bergantung pada lingkungannya. Dalam profil eksekusi, Anda dapat menyetel argumen JVM untuk alat dan mengonfigurasinya untuk dijalankan dalam proses terpisah. Saat ini, hanya alat R8 yang didukung.
Buat profil eksekusi dan tetapkan profil eksekusi default dalam
file settings.gradle
, seperti yang ditunjukkan dalam contoh berikut:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
Untuk mengganti profil default, pilih profil lain menggunakan
properti android.experimental.settings.executionProfile
dalam
file gradle.properties
:
android.experimental.settings.executionProfile=high
Anda juga dapat menetapkan properti ini menggunakan command line, yang memungkinkan Anda menyiapkan
alur kerja yang berbeda. Misalnya, jika memiliki alur kerja continuous integration, Anda dapat menggunakan command line untuk mengubah profil eksekusi tanpa harus mengubah file settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
JDK 17 diperlukan untuk menjalankan AGP 8.0
Saat menggunakan Plugin Android Gradle 8.0 untuk mem-build aplikasi, JDK 17 kini diperlukan untuk menjalankan Gradle. Android Studio Flamingo memaketkan JDK 17 dan mengonfigurasi Gradle untuk menggunakannya secara default, sehingga sebagian besar pengguna Android Studio tidak perlu membuat perubahan konfigurasi apa pun ke project mereka.
Jika Anda perlu menetapkan versi JDK yang digunakan oleh AGP di dalam Android Studio secara manual, Anda harus menggunakan JDK 17 atau versi yang lebih baru.
Saat menggunakan AGP yang tidak bergantung pada Android Studio, upgrade versi JDK dengan
menetapkan
variabel lingkungan JAVA_HOME
atau -Dorg.gradle.java.home
opsi command line
ke direktori penginstalan JDK 17 Anda.