Plugin Android Gradle 8.3.0 (Feb 2024)

Plugin Android Gradle 8.3.0 merupakan rilis utama yang menyertakan berbagai peningkatan dan fitur baru.

Kompatibilitas

API level maksimum yang didukung plugin Android Gradle 8.3 adalah API level 34. Berikut info kompatibilitas lainnya:

Versi minimum Versi default Catatan
Gradle 8.4 8.4 Untuk mempelajari lebih lanjut, lihat mengupdate Gradle.
SDK Build Tools 34.0.0 34.0.0 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.

Berikut adalah fitur baru di plugin Android Gradle 8.3.

Rilis patch

Berikut adalah daftar rilis patch di Android Studio Iguana dan plugin Android Gradle 8.3.

Android Studio Iguana | 2023.2.1 Patch 2 dan AGP 8.3.2 (April 2024)

Update minor ini mencakup perbaikan bug ini.

Android Studio Iguana | 2023.2.1 Patch 1 dan AGP 8.3.1 (Maret 2024)

Update minor ini mencakup perbaikan bug ini.

Dukungan untuk Katalog Versi Gradle

Android Studio mendukung Katalog Versi Gradle berbasis TOML, fitur yang memungkinkan Anda mengelola dependensi di satu lokasi pusat dan berbagi dependensi di seluruh modul atau project. Android Studio kini mempermudah konfigurasi katalog versi melalui saran editor dan integrasi dengan dialog Project Structure. Pelajari cara menyiapkan dan mengonfigurasi Katalog Versi Gradle atau cara memigrasikan build ke katalog versi.

Navigasi dan penyelesaian kode

Android Studio menawarkan penyelesaian kode saat Anda mengedit katalog versi dalam format file TOML atau menambahkan dependensi dari katalog versi ke file build. Untuk menggunakan penyelesaian kode, tekan Ctrl+Spasi (Command+Spasi di macOS). Selain itu, Anda dapat dengan cepat membuka referensi dependensi dalam file build.gradle aplikasi ke tempat dependensi tersebut dideklarasikan dalam katalog versi dengan menekan Ctrl+b (Command+b di macOS).

Pelengkapan kode saat menambahkan dependensi

Integrasi dengan dialog Project Structure

Jika project Anda menggunakan katalog versi yang ditentukan dalam format file TOML, Anda dapat mengedit variabel yang telah ditentukan di sana melalui tampilan Variables dialog Project Structure (File > Project Structure > Variables) di Android Studio. Untuk setiap katalog versi, ada drop-down yang mencantumkan variabel dari katalog tersebut. Untuk mengedit variabel, klik nilainya dan ganti. Saat Anda menyimpan perubahan ini, file TOML akan diperbarui.

Variabel dari katalog versi di dialog Project Structure

Anda juga dapat memperbarui dependensi di tampilan Dependencies dialog Project Structure (File > Project Structure > Dependencies). Untuk mengupdate versi menggunakan dialog Project Structure, buka modul dan dependensi yang ingin diedit, lalu perbarui kolom Requested Version. Saat Anda menyimpan perubahan ini, file TOML akan diperbarui. Perhatikan bahwa jika versi dependensi ditentukan menggunakan variabel, memperbarui versi secara langsung dengan cara ini akan mengganti variabel dengan nilai hardcode. Perhatikan juga bahwa menghapus dependensi dari file build, baik Anda menggunakan dialog Project Structure atau tidak, tidak akan menghapus dependensi dari katalog versi.

Dependensi dari katalog versi di dialog Project Structure

Masalah umum dan batasan

Berikut adalah masalah atau batasan umum terkait dukungan Katalog Versi Gradle di Android Studio.

  • Error yang menandai deklarasi alias plugin dalam file skrip Kotlin: saat Anda menambahkan deklarasi plugin dalam bentuk alias(libs.plugins.example), editor akan menambahkan garis bawah merah di bagian libs. Ini adalah masalah umum di Gradle versi 8.0 dan yang lebih lama dan akan diselesaikan dalam rilis Gradle mendatang.

  • Dukungan Android Studio hanya untuk katalog versi dalam format TOML: saat ini dukungan dialog Project Structure, navigasi, dan penyelesaian kode Android Studio hanya tersedia untuk katalog versi yang ditentukan dalam format file TOML. Namun, Anda masih dapat menambahkan katalog versi secara langsung di file settings.gradle dan menggunakan dependensinya dalam project Anda.

  • Navigasi untuk file build KTS tidak didukung: membuka definisi dependensi dalam katalog versi menggunakan Control+klik (Command+klik di macOS) belum didukung untuk file build yang ditulis menggunakan skrip Kotlin.

  • Firebase Assistant menambahkan dependensi langsung dalam skrip build: Firebase Assistant menambahkan dependensi langsung ke skrip build, bukan melalui katalog versi.

  • Fungsi "Temukan penggunaan" tidak didukung: menemukan penggunaan variabel katalog versi dalam file build lain belum didukung, baik file build berada di KTS maupun Groovy. Artinya, menggunakan Control+klik (Command+klik di macOS) pada definisi variabel dalam katalog versi tidak akan mengarah ke file build tempat variabel digunakan.

  • Dialog Project Structure di Android Studio menampilkan beberapa file katalog jika berada di folder gradle root, tetapi tidak menampilkan katalog untuk build komposit. Misalnya, jika Anda memiliki dua file katalog—satu untuk aplikasi dan satu lagi untuk build komposit—dialog Struktur Project hanya akan menampilkan file katalog aplikasi. Anda dapat menggunakan build gabungan, tetapi Anda harus mengedit file TOML-nya secara langsung.

Insight SDK tambahan: masalah kebijakan

Android Studio menampilkan peringatan lint dalam file build.gradle.kts dan build.gradle serta dalam Dialog Struktur Project untuk SDK publik yang memiliki pelanggaran kebijakan Play di Google Play SDK Index. Anda harus mengupdate dependensi apa pun yang melanggar kebijakan Play karena pelanggaran ini dapat mencegah Anda memublikasikan ke Konsol Google Play di masa mendatang. Peringatan pelanggaran kebijakan melengkapi peringatan versi usang yang ditampilkan oleh Android Studio.

Dukungan versi compileSdk Android Studio

Android Studio menampilkan peringatan jika project Anda menggunakan compileSdk yang tidak didukung oleh versi Android Studio saat ini. Jika tersedia, fitur ini juga menyarankan untuk beralih ke versi Android Studio yang mendukung compileSdk yang digunakan oleh project Anda. Perhatikan bahwa mengupgrade Android Studio mungkin juga mengharuskan Anda mengupgrade AGP. AGP juga menampilkan peringatan di jendela alat Build jika compileSdk yang digunakan oleh project Anda tidak didukung oleh versi AGP saat ini.

Perubahan perilaku lint

Mulai plugin Android Gradle 8.3.0-alpha02, saat menjalankan lint pada modul, tugas analisis lint terpisah dijalankan untuk komponen utama dan pengujian modul. Alasan perubahan ini adalah untuk meningkatkan performa. Untuk kembali ke perilaku sebelumnya, tetapkan android.experimental.lint.analysisPerComponent=false dalam file gradle.properties Anda.

Penyingkatan resource yang akurat aktif secara default

Penyingkatan resource yang akurat, yang menghapus entri yang tidak digunakan dari file resources.arsc dan menghilangkan file resource yang tidak digunakan, diaktifkan secara default. Jika penyingkatan ini diaktifkan, tabel resource Anda akan dikurangi dan hanya entri folder res yang direferensikan yang disertakan dalam APK.

Untuk menonaktifkan penyingkatan resource yang akurat, tetapkan android.enableNewResourceShrinker.preciseShrinking ke false dalam file gradle.properties project Anda.

Perbaikan masalah

Plugin Android Gradle 8.3.0

Perbaikan Masalah
Plugin Android Gradle
Cache build berlebihan untuk tugas PackageForUnitTest
[AGP 8.1.0] Pengujian ./gradlew gagal dengan pesan "Unable to find manifest output" jika splits.abi.isEnable dan testOptions.unitTests.isIncludeAndroidResources bernilai benar (true)
Pembuatan model AGP gagal dengan build gabungan gradle bertingkat
Penyingkat resource merusak ID resource, yang menyebabkan error runtime
Pemeriksaan versi minimum Gradle tidak berjalan di build kedua dan setelahnya
Eksekusi gagal untuk tugas ':app:mergeReleaseClasses' setelah Mengupdate AGP dari 8.0.2 ke 8.1.0
[Gradle 8.4][upgrade] Kegagalan uji integrasi setelah upgrade karena penggunaan fitur yang tidak digunakan lagi di plugin gradle kotlin
Jangan memeriksa keberadaan file overlay manifes selama fase konfigurasi
Link rusak ke dokumen Gradle saat terjadi error MergeJavaResWorkAction
Gradle 8.1 merusak cache konfigurasi karena .gradle/.android/analytics.settings
AGP tidak boleh menggunakan ProjectComponentIdentifier.projectPath tanpa ProjectComponentIdentifier.build
Kurangi/hapus logging tingkat info untuk AGP "Analytics other plugin to proto: ..."
[Gradle 8.4][upgrade] Operasi file selama konfigurasi di ProcessJavaResTask merusak cache konfigurasi
Variant API untuk mendapatkan tabel simbol (R.txt)
plugin mandiri lint tidak menangani dependensi gradleApi() dengan benar
kDocs yang buruk pada class/properti AGP. `VariantOutput.enable` menyarankan untuk diganti dengan `VariantOutput.enable`
AGP 8.3.0-alpha02 tidak dapat menginstal profil rilis di host Windows
Menerapkan `android.enableDexingArtifactTransform=true`
[Gradle 8.4][upgrade] Kegagalan uji integrasi setelah upgrade karena proses penanganan file dalam fase konfigurasi
AGP 8.3.0-alpha-02 - `Error: Gagal mendeserialisasi repositori resource yang di-cache.`
[Gradle 8.4][upgrade] Kegagalan uji integrasi setelah upgrade karena proses penanganan file dalam fase konfigurasi TestLabBuildService
AGP 8.1.0 meng-uninstal aplikasi setelah menjalankan uji instrumentasi - 7.4.2 tidak melakukan uninstal
Mengubah APK menyebabkan error dengan ListingFileRedirectTask
Mengubah artefak ASSETS akan memberikan lokasi input/output yang rusak
Mempromosikan android.experimental.r8.dex-startup-optimize=true menjadi default
Bermigrasi ke API penyesuaian konfigurasi Gradle baru
Kompilasi resource gagal saat compiler Kotlin mencoba diupdate ke IDEA 21.3
Get() reaktif dengan API artefak
Mengubah properti AGP "android.lint.printStackTrace" ke stabil
AGP 8.1.0: fitur dinamis: Dependensi implisit antara exportReleaseConsumerProguardFiles dan extractProguardFiles menyebabkan error kompilasi
`variant.unitTest.jniLibs.addGeneratedSourceDirectory` tampaknya tidak melakukan apa pun
Mengupdate parser XML yang digunakan di AGP untuk kompatibilitas Gradle 8.4
Instrumen jacoco paket rilis AGP 8.0.1 tidak berlaku
REGRESI HEDGEHOG: Tombol jalankan tertunda selama beberapa detik (Membuat spesifikasi)
AGP 8.3.0-alpha11 menghasilkan APK rilis yang error saat startup dengan android.content.res.Resources$NotFoundException
Mengubah properti AGP "android.lint.printStackTrace" ke stabil
Permintaan Fitur: Mempromosikan com.android.build.api.extension.impl.CURRENT_AGP_VERSION ke API publik
SDK Manager harus menghentikan spamming info log ke stdout
DexArchiveBuilderTaskDelegate gagal dengan modul library khusus resource
Varian plugin kustom AGP7.4 toTransform untuk semua tampilan entri duplikat: pengecualian META-INF/MANIFEST.MF
Mendukung tag Manifes baru,
Link untuk "Project terpisah" di setelan studio mengarah ke tempat yang salah.
Berikan opsi untuk menyertakan sumber yang dihasilkan di Javadoc dan SourceJar
Perlu perbaikan cepat untuk perbedaan antara compileSdk dan dependensi dengan minCompileSdkVersion
[Gradle] tools:overrideLibrary harus mendukung tanda bintang (*)
UI Membeku saat mengedit manifes
Tidak dapat menetapkan versi JaCoCo di AGP 8.2.0
Tugas penginstalan Plugin Android Gradle 8.2.0 gagal dalam project yang menggunakan fitur dinamis
Tugas penginstalan Plugin Android Gradle 8.2.0 gagal dalam project yang menggunakan fitur dinamis
Dexer (D8)
[desugared library] Library desugaring versi 2.1 tidak kompatibel dengan R8 versi sebelumnya
Pengoptimalan berjalan bahkan hanya dengan D8?
Lint
[Lint] TranslucentViewDetector mengalami error dalam fungsi filterIncident dan menyebabkan lint membuat hasil yang salah
TranslucentViewDetector harus menerima nilai "behind"
Android Lint gagal pada library KMP dengan 'variantInputs.name' doesn't have a configured value.`
TranslucentViewDetector melaporkan baris yang salah dalam manifes
lintDebug secara keliru melaporkan peringatan UseTomlInstead saat menggunakan dependensi project
Masalah tak terduga dari project lain yang ditandai oleh Android Lint
LINT memeriksa deteksi positif palsu (PP) Resource yang Tidak Digunakan di dalam binding dan pemroses klik
Tidak dapat memuat file jar pemeriksaan lint kustom: Node tidak dapat ditransmisikan ke TreeNode
Lint visitAnnotationUsage tidak dipanggil untuk penggunaan class yang dianotasi dalam deklarasi variabel
Lint 31.0.2 gagal dengan java.util.NoSuchElementException: Array kosong.
Tidak ada peringatan Lint tentang kotlin.text.MatchNamedGroupCollection#get(String) yang memerlukan API 26
lint:TypographyQuotes negatif palsu (NP): lebih dari satu apostrof yang di-escape akan diabaikan
AGP 8.0.2 lint positif palsu (PP) detektor InvalidId
Masalah LintError ditambahkan ke dasar pengukuran lint
Quickfix Lint tidak berfungsi dan menghasilkan error IDE
Kegagalan pengujian yang tidak konsisten karena analisis parsial
Sorotan peringatan tidak valid yang berupa positif palsu
Lint visitAnnotationUsage tidak dipanggil untuk penggunaan class yang dianotasi dalam deklarasi variabel
Pemroses Resource yang tidak digunakan mungkin menghapus file build Gradle
Pemeriksaan lint NewApi tidak memahami kolom akhir "isAtleastU() && otherCondition()"
StackOverflow dari `LintClient.getSdkHome`
Android Studio/Lint tidak memberi tahu Anda kapan dependensi "platform" kedaluwarsa
Bug: tidak ada saran untuk mengupdate dependensi Firebase-bom
Project Structure (dan Gradle (?)) tidak menemukan dependensi BOM Firebase untuk diupgrade ke versi yang lebih baru.
Integrasi Lint
Error lint DuplicatePlatformClasses dari dependensi testImplementation
Penyingkat (R8)
R8 tidak berfungsi setelah upgrade dari AGP 8.0.2 ke 8.1.0
isShrinkResources melakukan pengoptimalan berlebih di 8.3.0-alpha11 hingga alpha14
Error R8 Flurry SDK dengan AGP 8.2.0
Android - R8 menyebabkan subclass LinearLayoutManager tidak bekerja
R8 v8.2.33, "java.lang.VerifyError: Jenis buruk pada tumpukan operand" error saat runtime setelah upgrade
[R8 8.3.21] R8 8.3.21 lebih besar 1,57 MB dari R8 8.1.56
[R8 8.3.21] R8 8.3.21 lebih besar 1,57 MB dari R8 8.1.56
class.getInterfaces() menampilkan kosong
Pengujian SimpleKotlinEnumUnboxingTest gagal di bot kotlin_dev

Plugin Android Gradle 8.3.1

Perbaikan Masalah
Plugin Android Gradle
Masalah penanganan input inkremental MergeJavaResourcesTask
Integrasi Lint
Lint tidak dapat me-resolve jenis set sumber yang setara di AGP 8.3.0-rc02

Plugin Android Gradle 8.3.2

Perbaikan Masalah
Plugin Android Gradle
AGP 8.3 dengan desugaring yang diaktifkan dapat mengalami deadlock
AGP 8.3 merusak Tugas zipApksFor
Integrasi Lint
Lint tidak dapat membedakan dependensi KMP