Plugin Android Gradle 7.1.0 (Januari 2022)
Plugin Android Gradle 7.1.0 merupakan rilis utama yang menyertakan berbagai peningkatan dan fitur baru.
7.1.3 (April 2022)
Update minor ini mencakup perbaikan bug berikut:
- Masalah class duplikat yang dilaporkan oleh R8
Untuk melihat daftar lengkap perbaikan bug yang disertakan dalam rilis ini, lihat postingan blog Android Studio Bumblebee Patch 3.
7.1.2 (Februari 2022)
Update minor ini mencakup perbaikan bug berikut:
- Plugin Android Gradle 7.1.0-rc01 gagal melakukan transformasi bytecode ASM selama pengujian unit
- Sinkronisasi Gradle gagal dengan pesan "Unable to load class 'com.android.build.api.extension.AndroidComponentsExtension'."
- Beberapa blok DSL baru tidak dapat digunakan dari Groovy DSL di Plugin Android Gradle 7.0.0
- API penerbitan baru AGP 7.1: javadoc jar yang dibuat tidak ditandatangani
- ClassesDataSourceCache harus menggunakan versi Asm terbaru
- Android Studio BumbleBee tidak selalu men-deploy perubahan terbaru
Untuk melihat daftar lengkap perbaikan bug yang disertakan dalam rilis ini, lihat postingan blog Android Studio Bumblebee Patch 2.
7.1.1 (Februari 2022)
Update minor ini sesuai dengan rilis Android Studio Bumblebee Patch 1.
Untuk melihat daftar perbaikan bug yang disertakan dalam rilis ini, lihat postingan blog Android Studio Bumblebee Patch 1.
Kompatibilitas
Versi minimum | Versi default | Catatan | |
---|---|---|---|
Gradle | 7.2 | 7.2 | 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 | 21.4.7075529 | Instal atau konfigurasi versi lain dari NDK. |
JDK | 11 | 11 | Untuk mempelajari lebih lanjut, lihat menyetel versi JDK. |
Tugas analisis lint kini dapat di-cache
AndroidLintAnalysisTask
kini kompatibel dengan
cache build
Gradle. Jika Anda mengaktifkan cache build dengan menetapkan
org.gradle.caching=true
dalam file gradle.properties
, tugas analisis lint akan mendapatkan outputnya dari cache build jika
memungkinkan.
Tugas analisis lint sering kali menjadi bottleneck terbesar saat menjalankan lint dengan plugin Android Gradle, sehingga mengaktifkan cache build akan meningkatkan kecepatan build saat menjalankan lint dalam banyak situasi. Anda akan melihat peningkatan performa yang signifikan, misalnya, jika Anda memiliki project multi-modul dan membersihkan direktori build sebelum menjalankan lint di server CI.
Modul C/C++ kini dapat mereferensikan modul C/C++ lain dalam project yang sama
Modul Android Gradle dengan kode C/C++ kini dapat disiapkan untuk mereferensikan file header dan kode library dalam modul Gradle lain. Protokol Prefab digunakan untuk mengomunikasikan header dan library antar-modul Gradle.
Persyaratan
-
Modul penggunaan harus
CMake
dan bukanndk-build
. Dukungan untuk ndk-build akan memerlukan update NDK di masa mendatang. Modul publikasi dapat berupaCMake
ataundk-build
. -
Modul pengguna harus mengaktifkan
prefab
dalam filebuild.gradle
.
android {
buildFeatures {
prefab true
}
}
- Modul publikasi harus mengaktifkan
prefabPublishing
dalam filebuild.gradle
.
android {
buildFeatures {
prefabPublishing true
}
}
- Modul pengguna harus mereferensikan modul publikasi
dengan menambahkan baris di blok
dependencies
filebuild.gradle
. Contoh:
dependencies {
implementation project(':mylibrary')
}
- Modul publikasi harus mengekspos paket menggunakan
bagian
prefab
. Contoh:
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}
- File
CMakeLists.txt
modul pengguna mungkin menggunakanfind_package()
untuk menemukan paket yang dipublikasikan oleh modul penghasil. Contoh:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
- Harus ada satu STL untuk seluruh aplikasi. Jadi, misalnya, modul pengguna maupun modul publikasi dapat menggunakan STL bersama C++.
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
Untuk penjelasan lebih lanjut tentang cara mengonfigurasi konsumen dan produsen AAR native dengan AGP, lihat Dependensi native dengan AGP.
Setelan repositori dalam file settings.gradle
Saat project baru dibuat di Android Studio Bumblebee, file build.gradle
level atas
berisi blok plugins
,
diikuti dengan kode untuk membersihkan direktori build Anda:
plugins {
id 'com.android.application' version '7.1.0-beta02' apply false
id 'com.android.library' version '7.1.0-beta02' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Setelan repositori yang sebelumnya berada di file
build.gradle
level atas sekarang berada di file
settings.gradle
:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'
File build.gradle
level modul tidak berubah. Jadi, gunakan file build.gradle
tingkat atas dan file settings.gradle
untuk menentukan konfigurasi
build yang berlaku untuk semua modul dalam project Anda, atau repositori
dan dependensi yang berlaku untuk Gradle itu sendiri; gunakan file build.gradle
tingkat modul untuk menentukan konfigurasi build yang spesifik untuk modul
tertentu dalam project Anda.
Penyingkat resource yang ditingkatkan
Android Studio Bumblebee menyertakan penyingkat resource yang ditingkatkan, yang membantu mengurangi ukuran aplikasi.
Dukungan untuk aplikasi dengan fitur dinamis
Implementasi default penyingkat resource Android telah diupdate di Plugin Android Gradle 7.1.0-alpha09. Implementasi baru ini mendukung penyingkatan aplikasi dengan fitur dinamis.
Pengurangan ukuran aplikasi lebih lanjut eksperimental
Implementasi penyingkat resource baru ini dapat mengurangi lebih banyak lagi ukuran
aplikasi Anda yang menyusut dengan memodifikasi tabel resource untuk menghapus resource dan referensi nilai
yang tidak terpakai ke resource file yang tidak digunakan. Penyingkat resource
baru dapat menghapus sepenuhnya resource file yang tidak digunakan, sehingga lebih banyak lagi mengurangi ukuran
aplikasi Anda. Perilaku ini belum diaktifkan secara default, tetapi Anda dapat
memilih untuk mencobanya dengan menambahkan opsi eksperimental
android.experimental.enableNewResourceShrinker.preciseShrinking=true
ke file gradle.properties
project Anda.
Harap laporkan masalah apa pun yang Anda temukan terkait penyingkat resource baru atau
flag eksperimental. Untuk membantu mendiagnosis masalah, atau sebagai solusi sementara,
Anda dapat beralih kembali ke implementasi sebelumnya dengan menambahkan
android.enableNewResourceShrinker=false
ke gradle.properties
project Anda.
Penyingkat baru akan menggantikan resource berbasis file yang tidak digunakan dengan
file minimal yang sedikit berbeda dari penyingkat resource sebelumnya, tetapi hal ini diharapkan
tidak memiliki dampak runtime apa pun.
Implementasi lama dijadwalkan akan dihapus di plugin Android Gradle 8.0.0.
Publikasi varian build
Plugin Android Gradle 7.1.0 dan yang lebih tinggi memungkinkan Anda mengonfigurasi varian build yang akan dipublikasikan ke repositori Maven Apache. AGP membuat komponen dengan satu atau beberapa varian build berdasarkan DSL publikasi baru, yang dapat Anda gunakan untuk menyesuaikan publikasi ke repositori Maven. Dibandingkan versi sebelumnya, tindakan ini juga menghindari pekerjaan yang tidak perlu, karena tidak ada komponen yang akan dibuat secara default. Untuk mempelajari lebih lanjut, lihat contoh kode publikasi.
Memublikasikan Javadoc JAR
AGP 7.1.0 dan yang lebih tinggi memungkinkan Anda membuat Javadoc dari sumber Java dan Kotlin
serta memublikasikan file JAR Javadoc selain AAR untuk project
library. Javadoc ditambahkan ke file POM dan
Metadata Modul Gradle{:.external}. Aktifkan fitur ini dengan menambahkan withJavadocJar()
di
blok publikasi singleVariant
atau multipleVariants
.
Untuk mempelajari lebih lanjut, lihat
contoh kode opsi publikasi.
Memublikasikan sumber JAR
AGP 7.1.0 dan yang lebih tinggi memungkinkan Anda memublikasikan file JAR sumber Java dan Kotlin
selain AAR untuk project library. Sumber tersebut ditambahkan ke file
POM dan
Metadata Modul Gradle{:.external}. Anda dapat mengaktifkan fitur
ini dengan menambahkan withSourcesJar()
di
blok publikasi
singleVariant
atau multipleVariants
. Untuk mempelajari lebih lanjut, lihat
contoh kode opsi publikasi.
Perubahan semantik pemblokiran lint
Semua metode lint yang mengganti tingkat keparahan masalah yang diberikan—enable
, disable
/ignore
,
informational
, warning
, error
,
fatal
—kini mematuhi urutan konfigurasi. Misalnya,
menetapkan masalah sebagai fatal dalam
finalizeDsl()
kini akan menggantikan penonaktifannya dalam DSL utama. Untuk mengetahui informasi selengkapnya, lihat
dokumen referensi blok
lint{}
dan
alur build
serta titik ekstensi Android.
Kompatibilitas Navigation Safe Args
AGP API yang menjadi dependensi plugin Gradle Navigation Safe Args telah dihapus. AGP 7.1 tidak berfungsi dengan Navigation Safe Args versi 2.4.0-rc1 atau 2.4.0, tetapi akan berfungsi dengan versi 2.5.0-alpha01 dan 2.4.1. Sementara itu, sebagai solusinya, Anda dapat menggunakan AGP 7.1 dengan build snapshot Navigation Safe Args, Navigation 2.5.0-SNAPSHOT. Untuk menggunakan build snapshot, ikuti petunjuk snapshot dengan ID build #8054565.
Selain itu, Navigation Safe Args versi 2.4.1 dan 2.5.0 tidak akan berfungsi lagi dengan AGP 4.2. Untuk menggunakan Safe Args versi tersebut, Anda harus menggunakan AGP 7.0 dan yang lebih tinggi.
Menonaktifkan pembuatan komponen otomatis
Mulai AGP 8.0, pembuatan komponen otomatis akan dinonaktifkan secara default.
Saat ini, AGP 7.1 secara otomatis membuat komponen untuk setiap varian build,
yang memiliki nama yang sama dengan varian build, dan komponen all
yang berisi semua varian build. Pembuatan komponen
otomatis ini akan dinonaktifkan. Untuk bertransisi ke perilaku baru, Anda harus
menonaktifkan pembuatan komponen otomatis secara manual dengan menetapkan
android.disableAutomaticComponentCreation
ke true.
.
Untuk mengetahui informasi selengkapnya, lihat
Menggunakan plugin Maven Publish.
Kompatibilitas Firebase Performance Monitoring
AGP 7.1 tidak kompatibel dengan plugin Gradle Firebase Performance Monitoring
versi 1.4.0 dan yang lebih rendah. Upgrade Assistant AGP tidak akan otomatis
mengupdate plugin ke versi 1.4.1, jadi jika Anda menggunakan firebase-perf
dan ingin
mengupgrade AGP ke 7.1, Anda harus melakukan upgrade khusus ini secara manual.
Masalah umum
Bagian ini menjelaskan masalah umum yang ada di plugin Android Gradle 7.1.0.
Masalah saat menguji unit project aplikasi yang menggunakan plugin Hilt
Classpath pengujian unit berisi class aplikasi yang tidak diinstrumentasi, yang berarti Hilt tidak menginstrumentasi class aplikasi untuk menangani injeksi dependensi saat menjalankan pengujian unit.
Masalah ini akan diperbaiki dengan rilis 7.1.1, lihat masalah #213534628.