Plugin Android Gradle 8.1.0 (Juli 2023)

Plugin Android Gradle 8.1.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 33.0.1 33.0.1 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.

DSL Kotlin adalah default untuk konfigurasi build

Project baru kini menggunakan DSL Kotlin (build.gradle.kts) secara default untuk konfigurasi build. Alat ini menawarkan pengalaman pengeditan yang lebih baik daripada Groovy DSL (build.gradle) dengan penyorotan sintaksis, penyelesaian kode, dan navigasi ke deklarasi. Perhatikan bahwa jika menggunakan AGP 8.1 dan DSL Kotlin untuk konfigurasi build, Anda harus menggunakan Gradle 8.1 untuk mendapatkan pengalaman terbaik. Untuk mempelajari lebih lanjut, lihat panduan migrasi DSL Kotlin.

Dukungan bahasa per aplikasi otomatis

Mulai dari Android Studio Giraffe Canary 7 dan AGP 8.1.0-alpha07, Anda dapat mengonfigurasi aplikasi untuk mendukung preferensi bahasa per aplikasi secara otomatis. Berdasarkan resource project Anda, plugin Android Gradle menghasilkan file LocaleConfig dan menambahkan referensi ke file tersebut dalam file manifes akhir, sehingga Anda tidak perlu lagi melakukannya secara manual. AGP menggunakan resource dalam folder res modul aplikasi Anda dan dependensi modul library apa pun untuk menentukan lokalitas yang akan disertakan dalam file LocaleConfig.

Perhatikan bahwa fitur bahasa per aplikasi otomatis mendukung aplikasi yang menjalankan Android 13 (level API 33) atau yang lebih baru. Untuk menggunakan fitur ini, Anda harus menetapkan compileSdkVersion ke versi 33 atau lebih tinggi. Untuk mengonfigurasi preferensi bahasa per aplikasi untuk Android versi sebelumnya, Anda masih harus menggunakan API dan pemilih bahasa dalam aplikasi.

Untuk mengaktifkan dukungan bahasa per aplikasi otomatis, tentukan lokalitas default:

  1. Dalam folder res modul aplikasi, buat file baru bernama resources.properties.
  2. Dalam file resources.properties, tetapkan lokalitas default dengan label unqualifiedResLocale. Untuk membentuk nama lokalitas, gabungkan kode bahasa dengan skrip opsional dan kode wilayah, yang memisahkan keduanya dengan tanda hubung:

    Misalnya, jika lokalitas default Anda adalah bahasa Inggris Amerika:

        unqualifiedResLocale=en-US
        

AGP menambahkan lokalitas default ini dan lokalitas alternatif yang telah Anda tentukan, menggunakan direktori values-* dalam folder res, ke file LocaleConfig yang dibuat secara otomatis.

Dukungan bahasa per aplikasi otomatis dinonaktifkan secara default. Untuk mengaktifkan fitur ini, gunakan setelan generateLocaleConfig dalam blok androidResources {} file build.gradle.kts level modul (file build.gradle jika Anda menggunakan Groovy):

Kotlin

android {
  androidResources {
    generateLocaleConfig = true
  }
}

Groovy

android {
  androidResources {
    generateLocaleConfig true
  }
}

Android Lint berisi bytecode yang menargetkan JVM 17

Mulai AGP 8.1.0-alpha04, Android Lint berisi bytecode yang menargetkan JVM 17. Jika menulis pemeriksaan lint kustom, Anda harus melakukan kompilasi dengan JDK 17 atau yang lebih baru dan menentukan jvmTarget = '17' dalam opsi compiler Kotlin.

Untuk mempelajari alat lint lebih lanjut, lihat Meningkatkan kode dengan pemeriksaan lint.

Setelan kompresi library native dipindahkan ke DSL

Mulai dari AGP 8.1.0-alpha10, Anda akan mendapatkan peringatan jika tidak mengonfigurasi kompresi library native menggunakan DSL, bukan manifes. Panduan berikut menjelaskan cara memperbarui konfigurasi untuk menggunakan DSL. Untuk mendapatkan bantuan dalam melakukan pembaruan ini, gunakan Upgrade Assistant AGP (Tools > AGP Upgrade Assistant).

Untuk menggunakan library native yang tidak dikompresi, hapus atribut android::extractNativeLibs dari manifes dan tambahkan kode berikut ke file build.gradle.kts level modul (file build.gradle jika Anda menggunakan Groovy):

Kotlin

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging = false
    }
  }
}

Groovy

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging false
    }
  }
}

Tanda build eksperimental

Ini adalah flag eksperimental untuk mengonfigurasi build Anda yang tersedia di AGP 8.1.

Flag Ditambahkan di Nilai default Catatan
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes AGP 8.0 false Mengaktifkan ini tanpa konfigurasi penandatanganan yang ditentukan akan menyebabkan AGP menggunakan konfigurasi penandatanganan debug default saat menjalankan build yang dapat dibuat profil atau dapat di-debug. Flag ini dinonaktifkan secara default untuk mendorong penulis build agar mendeklarasikan konfigurasi penandatanganan pembuatan profil tertentu.
android.experimental.library.desugarAndroidTest AGP 8.0 false Tanda ini memungkinkan builder library mengaktifkan desugaring library inti untuk APK pengujian tanpa memengaruhi AAR yang dihasilkan, misalnya melalui lint. Kami berencana untuk mendukung perilaku ini di Variant API.
android.experimental.testOptions.managedDevices.customDevice AGP 8.0 false Jika diaktifkan, Perangkat yang Dikelola Gradle akan mengizinkan jenis perangkat kustom yang ditentukan pengguna yang dapat disediakan oleh plugin. Flag ini harus diaktifkan jika Anda ingin menggunakan plugin Firebase Test Lab.
android.lint.printStackTrace AGP 8.0 false Jika diaktifkan, Android lint akan mencetak stacktrace jika mengalami error. Flag ini memiliki kemampuan yang sama dengan variabel lingkungan LINT_PRINT_STACKTRACE.
android.experimental.testOptions.managedDevices.maxConcurrentDevices AGP 8.0 Tidak ada Menentukan jumlah maksimum Perangkat yang Dikelola Gradle (AVD) secara serentak agar aktif pada satu waktu. Jika nilainya 0 atau negatif, tidak ada jumlah maksimum perangkat.
android.experimental.testOptions.installApkTimeout AGP 8.0 Tidak ada Durasi waktu tunggu dalam detik untuk menginstal APK. Jika nilainya 0 atau negatif, nilai tersebut akan ditetapkan ke nilai default oleh UTP.