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 mengetahui 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 di file build.gradle.kts
tingkat modul, bukan
di file manifes. Anda dapat mulai menggunakan properti DSL namespace
mulai dari 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. Asisten Upgrade AGP memblokir
upgrade jika menemukan bahwa namespace utama dan namespace pengujian project Anda
sama. Jika upgrade diblokir, Anda harus mengubah
testNamespace
secara manual dan memodifikasi kode sumber Anda dengan tepat. - Setelah Anda mengubah namespace pengujian, ada kemungkinan kode Anda dikompilasi, tetapi pengujian berinstrumen Anda gagal saat runtime. Hal ini dapat terjadi jika kode sumber pengujian yang diinstrumentasi mereferensikan resource yang ditentukan di
androidTest
dan sumber aplikasi Anda.
Untuk mengetahui informasi selengkapnya, lihat masalah #191813691 komentar #19.
Perubahan yang dapat menyebabkan gangguan: nilai default opsi build
Mulai AGP 8.0, nilai default untuk tanda 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 perlu
menentukan opsi ini menggunakan DSL di 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 di project yang memerlukannya. Flag ini direncanakan 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 di 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
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 akan mengeluarkan peringatan jika mendeteksi penyelesaian konfigurasi selama fase konfigurasi karena berdampak negatif pada waktu konfigurasi Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 gagal membangun yang menggunakan R8 jika ada class yang hilang untuk
memastikan pengoptimalan DEX yang lebih baik. Untuk mengatasinya, Anda perlu menambahkan
library yang tidak ada atau aturan penyimpanan -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 |
Jika penambahan 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 penghapus resource baru secara default. Penyingkat resource baru mencakup 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 di-cache secara default karena Gradle
melacak file resource relatif terhadap lokasi project. Memerlukan
android.enableSourceSetPathsMap untuk diaktifkan. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 tidak membuat SoftwareComponent secara default. Sebagai gantinya, AGP membuat SoftwareComponent 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 mengetahui informasi selengkapnya tentang fitur ini, lihat catatan rilis dan dokumentasi.
Kategori tugas Build Analyzer
Mulai dari 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 berdasarkan kategori, bukan menampilkannya satu per satu. Misalnya, tugas khusus untuk Resource Android, Kotlin, atau Dexing dikelompokkan bersama, lalu diurutkan berdasarkan durasi build. Hal ini memudahkan Anda mengetahui kategori mana yang paling memengaruhi waktu pembangunan. 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 berbagai petunjuk tentang cara menjalankan alat, dan beralih di antara keduanya.
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 menjalankan alat; 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 Anda 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
menyetel variabel lingkungan JAVA_HOME
atau opsi command line -Dorg.gradle.java.home
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) |
|