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 di 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 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
mulai 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 tidak benar dalam beberapa kasus. AGP Upgrade Assistant akan memblokir
upgrade jika menemukan bahwa namespace utama dan namespace pengujian project Anda
sama. Jika upgrade diblokir, Anda perlu mengubah
testNamespace
secara manual dan memodifikasi kode sumber Anda sebagaimana mestinya. - Setelah Anda mengubah namespace pengujian, kode Anda mungkin dikompilasi,
tetapi pengujian berinstrumen gagal saat runtime. Hal ini dapat terjadi jika
kode sumber pengujian berinstrumen mereferensikan resource yang ditentukan dalam
androidTest
dan sumber aplikasi Anda.
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 berubah untuk meningkatkan performa build. Untuk mendapatkan bantuan dalam menyesuaikan kode Anda guna mendukung beberapa perubahan ini, gunakan Upgrade Assistant AGP (Tools > AGP Upgrade Assistant). Upgrade Assistant memandu Anda dalam memperbarui kode untuk mengakomodasi perilaku baru atau menetapkan tanda 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 harus menentukan opsi ini menggunakan DSL di project tempat Anda memerlukannya. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 tidak mengaktifkan dukungan AIDL secara default. Anda harus menentukan opsi ini menggunakan DSL di project tempat Anda memerlukannya. Flag ini akan dihapus di AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 tidak mengaktifkan dukungan RenderScript secara default. Anda harus menentukan opsi ini menggunakan DSL di project tempat Anda memerlukannya. Flag ini direncanakan 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
hanya dalam modul saat ini. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 mengaktifkan mode penuh R8 secara default. Untuk mengetahui detail selengkapnya, lihat Mode penuh 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 akan diabaikan dan AGP
akan mencetak peringatan.
Flag | Nilai yang diterapkan | Catatan |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 memunculkan peringatan jika mendeteksi resolusi konfigurasi selama fase konfigurasi karena berdampak negatif pada waktu konfigurasi Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 gagal membuat build yang menggunakan R8 jika ada class yang hilang untuk
memastikan pengoptimalan DEX yang lebih baik. Untuk mengatasi hal ini, Anda perlu menambahkan
library yang hilang atau aturan simpan -dontwarn . Untuk mengetahui detail selengkapnya,
lihat
Peringatan class yang tidak ada dalam shrinker R8. |
android.testConfig.useRelativePath |
true |
Jika dukungan untuk menggunakan 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 dapat 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 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 |
Menggunakan implementasi 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 diperbarui. |
android.cacheCompileLibResources |
true |
Resource library yang dikompilasi kini dapat di-cache secara default karena Gradle
melacak file resource yang relatif terhadap lokasi project. Memerlukan
android.enableSourceSetPathsMap untuk diaktifkan. |
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 flag 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 tinggi, Build Analyzer akan mengelompokkan tugas menurut kategori, bukan menampilkannya satu per satu. Misalnya, tugas khusus untuk Resource Android, Kotlin, atau Dexing digabungkan, lalu diurutkan berdasarkan durasi build. Hal ini memudahkan Anda mengetahui kategori yang paling memengaruhi waktu build. Memperluas setiap kategori akan menampilkan daftar tugas yang sesuai. Untuk menampilkan tugas satu per satu, tanpa pengelompokan, gunakan drop-down Kelompokkan menurut.
Plugin setelan baru
AGP 8.0.0-alpha09 memperkenalkan plugin setelan baru. Plugin setelan memungkinkan Anda memusatkan konfigurasi global—konfigurasi yang berlaku untuk semua modul—di satu tempat sehingga Anda tidak perlu menyalin dan menempelkan konfigurasi di beberapa modul. Selain itu, Anda dapat menggunakan plugin setelan untuk membuat profil eksekusi alat, atau petunjuk yang berbeda tentang cara menjalankan alat, dan beralih di antara alat tersebut.
Untuk menggunakan plugin setelan, terapkan plugin dalam 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 profil eksekusi yang berbeda bergantung pada lingkungan. Dalam profil eksekusi, Anda dapat menetapkan argumen JVM untuk alat dan mengonfigurasinya agar berjalan 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 integrasi berkelanjutan,
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 melakukan 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 yang lebih tinggi.
Saat menggunakan AGP yang tidak bergantung pada Android Studio, upgrade versi JDK dengan
menetapkan JAVA_HOME
variabel lingkungan
atau -Dorg.gradle.java.home
opsi command line
ke direktori penginstalan JDK 17 Anda.
Perbaikan masalah
Plugin Android Gradle 8.0.0
Perbaikan Masalah | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Plugin Android Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Integrasi Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Penyingkat (R8) |
|
Plugin Android Gradle 8.0.1
Perbaikan Masalah | ||||
---|---|---|---|---|
Penyingkat (R8) |
|
Plugin Android Gradle 8.0.2
Perbaikan Masalah | |||||
---|---|---|---|---|---|
Penyingkat (R8) |
|