Android Gradle Plugin 8.2.0 (Kasım 2023)

Android Gradle eklentisi 8.2.0, çeşitli yeni özellikler ve iyileştirmeler içeren önemli bir sürümdür.

Uyumluluk

Android Gradle eklentisi 8.2'nin desteklediği maksimum API düzeyi 34'tür. Diğer uyumluluk bilgileri:

Minimum sürüm Varsayılan sürüm Notlar
Gradle 8.2 8.2 Daha fazla bilgi için Gradle'i güncelleme başlıklı makaleyi inceleyin.
SDK Oluşturma Araçları 34.0.0 34.0.0 SDK Oluşturma Araçları'nı yükleyin veya yapılandırın.
NDK Yok 25.1.8937393 NDK'nın farklı bir sürümünü yükleyin veya yapılandırın.
JDK 17 17 Daha fazla bilgi için JDK sürümünü ayarlama başlıklı makaleyi inceleyin.

JDK yolunu belirtmek için yeni makro

#GRADLE_LOCAL_JAVA_HOME, JDK yolunu belirtmek için kullanabileceğiniz yeni bir makrodur. Bu sayede, projeniz için Gradle daemon'ının (arka plan işlemi) yürütülmesi amacıyla kullanılan Java ana yolu daha güvenli ve kolay bir şekilde belirtilebilir. Yol seçimi, .gradle/config.properties dosyasında java.home alanında saklanır. Bu alanı Android Studio'daki Gradle JDK ayarlarından ayarlayın: Dosya (veya macOS'te Android Studio) > Ayarlar > Derleme, Yürütme, Dağıtım > Derleme Araçları > Gradle.

Yeni projelerde varsayılan olarak #GRADLE_LOCAL_JAVA_HOME kullanılır. #JAVA_HOME gibi bir makro kullanmıyorsanız mevcut projeler, başarılı bir senkronizasyondan sonra otomatik olarak yeni makroya taşınır.

Yeni makronun başlıca avantajları şunlardır:

  • Önce projenizi açmadan senkronizasyonu tetiklemek için JDK yolunu manuel olarak değiştirebilirsiniz.
  • Gradle JDK seçiminiz için tek bir doğru kaynak olduğundan, uyumsuz Gradle ve proje JDK sürümleriyle ilgili daha az hata.

Çözülen sorunlar

Android Gradle eklentisi 8.2.0

Çözülen Sorunlar
Android Gradle eklentisi
Özel kaynak türleri, birden çok çeşide sahip kaynak kümeleri oluşturmalıdır
SDK sürümü kontrolü, SDK uzantılarının kullanıcılarını işleme almaz
DependenciesInfoBuilder için API güncellemesi ve doküman gerekiyor
Java 11 hedefi ile DexingNoClasspathTransform (minSdk >= 24) eksik iç içe yerleştirilmiş üyeler nedeniyle başarısız oluyor
DslExtension.Builder.extendProjectWith(), Groovy'da açıklandığı gibi çalışmıyor
kotlin.Pair kullanmayan VariantSelector.withFlavor API'sini ekleyin
"proguard.txt" değiştiği için AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) önbelleği kaçırıldı
Uygulamanın birleştirilmiş manifest dosyasında, bağımlılıklardan extractNativeLibs ve useEmbeddedDex özellikleri yer alıyor
AIDL, build-tools 33.0.0 ile başarısız oluyor
AGP: AIDL aracının ve çerçeve AIDL dosyasının yolunu herkese açık API olarak gösterme
İstek: IDE'nin "PermittedSubclasses requires ASM9" hatası için bir çözüm sunması
AGP'yi derlerken 17 kod birimi hedefleme
VariantManager.getModifiedName işlevini kaldırın
AndroidTest.packaging.jniLibs.keepDebugSymbols, androidTest paketlemeyi etkilemez
GMD enstrümantasyon testi görevleri takılıyor ve yeniden denemede başarısız olmaya başlıyor
agp 8.1.0'daki generateLocaleConfig, yeniden üretilebilir derlemeleri bozan, kesin olmayan sıralama kullanır
ProcessApplicationManifest.navigationJsons mutlak yolları olan dosyalar içeriyor
AnalyticsService oluşturulduktan sonra AnalyticsConfiguratorService aracılığıyla GradleBuildProject.Builder'a erişime izin verilmez
AndroidTest.packaging.jniLibs.keepDebugSymbols, androidTest paketlemeyi etkilemez
Yasa dışı renk değerleri için derlemeye izin verilir
VariantBuilder için yanlış "ReplaceWith"
Gradle 8.1, .gradle/.android/analytics.settings nedeniyle yapılandırma önbelleğe alma işlemini bozuyor
Desteği sonlandırılan mesajlar "ReplaceWith"ı kullanmaz
Varsayılan NDK sürümünü alma yöntemini gösterme
Android Gradle eklentisinin çalışması için Java 17 gerekir.
ASM Dönüşüm ve toAppend() uyumsuzluğu
KMP projesinde Gradle aracılığıyla K2 UAST ile lint çalıştırırken LintErrors'i düzeltme
Varyant düzeyinde missingDimensionStrategy ve muhtemelen yapı türü/lezzet eşleştirme için yedek desteği
"android.injected.studio.version", Android Studio Giraffe'da kaldırıldı
AndroidXDependencyCheck'i devre dışı bırakma özelliği eklendi
agp 8.1.0'daki generateLocaleConfig, yeniden üretilebilir derlemeleri bozan, kesin olmayan sıralama kullanır
AAR meta verilerinde R8 / D8 sürüm koşullarını belirtme (ör. coreLibraryDesugaring ve yeni API satır dışı işleme için)
Senkronizasyon uyarısı: "AnalyticsService oluşturulduktan sonra GradleBuildProject.Builder'a AnalyticsConfiguratorService üzerinden erişilmemelidir"
Gradle 8.2 aşamasını veya RC sürümünü güncelleyin
"java.lang.Comparable" sınıfına erişilemiyor
androidResources, android kitaplık modülünde kullanılamaz
AGP 8.0.2'den 8.1.0'a güncellendikten sonra ":app:mergeReleaseClasses" görevi için yürütme başarısız oldu
Gradle 8.1, .gradle/.android/analytics.settings nedeniyle yapılandırma önbelleğe alma işlemini bozuyor
[AGP 8.1.0] Hem splits.abi.isEnable hem de testOptions.unitTests.isIncludeAndroidResources doğruysa ./gradlew test "Manifest çıkışı bulunamadı" hatasıyla başarısız oluyor
Android Studio Giraffe, AGP 8.1 ile versionCodeOverride'a uymuyor
AGP 8.1.0, enstrümante testleri çalıştırdıktan sonra uygulamayı kaldırıyor ancak 7.4.2 kaldırmıyor
Bir APK'yı dönüştürmek, ListingFileRedirectTask ile ilgili bir hataya neden oluyor
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
Dexer (D8)
Minimum API 34 ve üzeri için dizine ekleme yaparken yerel kayıt ve mühürlü sınıfları etkinleştirme
Lint
Oluşturulan lint kontrolü, AppComponentFactory'yi iyi işlemiyor
Lint 8.2.0 alfa sürümleri, Kotlin'de üst düzey işlev içe aktarma işlemlerini hâlâ desteklemiyor
Satır ve sütun numaralarını lint taban çizgisine dahil etmeme seçeneği ekleme
Satır ve sütun numaralarını lint taban çizgisine dahil etmeme seçeneği ekleme
Lint testleri Java 17 dil özelliklerini desteklemez
Bumblebee 2021.1.1 Yama 1, commons-io'nun eski bir sürümünün (20030203.000550) 2.11.0'dan daha yeni olduğunu söylüyor.
Lint 8.2.0 alfa sürümleri, Kotlin'de üst düzey işlev içe aktarma işlemlerini hâlâ desteklemiyor
Bumblebee 2021.1.1 Yama 1, commons-io'nun eski bir sürümünün (20030203.000550) 2.11.0'dan daha yeni olduğunu söylüyor.
Android Studio, belirtilen sürümü hatalı şekilde eski olarak işaretliyor.
Lint, K2 UAST kullanılırken UseValueOf sorununu yoksayar
Android Lint tarafından işaretlenen başka bir projedeki beklenmeyen sorunlar
Android Lint, "variantInputs.name" özelliğinin yapılandırılmış bir değeri olmadığı bir KMP kitaplığında başarısız oluyor.
Lint Entegrasyonu
testImplementation bağımlılığından DuplicatePlatformClasses lint hatası
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Apache POI kitaplığı kullanıldığında derleme, :minifyReleaseWithR8'de takılıyor
Kotlin 1.9, null kontrollerinin kaldırılması durumunda Kotlin lambdalarının R8 tarafından yok edilmesine neden oluyor

Android Gradle eklentisi 8.2.1

Çözülen Sorunlar
Android Gradle eklentisi
Alt projelerin sınıfları, yapı dönüştürme işlemleri aracılığıyla zaten dex'lenmişse sınıfları dex'leme görevini çalıştırmayın
Android Gradle eklentisi, JavaVersion.VERSION_11 ve OpenJDK 21 ea ile başarısız oldu
Dexer (D8)
Android U için kayıtları şekerden arındırma
Shrinker (R8)
R8, çalışma zamanında sınıf yayınlama istisnasına neden olan bozuk dex oluşturuyor
R8, erişilemeyen arayüze arayüz değişikliğine neden oluyor
AGP 8.2.0 ile R8 Flurry SDK kilitlenmesi
Android - R8, LinearLayoutManager alt sınıfının kilitlenmesine neden oluyor
Yeniden paketleme etkinken ve küçültme, karartma ve optimizasyon devre dışıyken R8'de ClassCastException
R8, BridgeAnalyzer.analyzeMethod'da takıldı
R8 v8.2.33, yükseltme işleminden sonra "java.lang.VerifyError: Bad type on operand stack" çalışma zamanı kilitlenmesi

Android Gradle eklentisi 8.2.2

Çözülen Sorunlar
Android Gradle eklentisi
AGP 8.2.0'da JaCoCo sürümü ayarlanamıyor
Dexer (D8)
[desugared library] Desugared library version 2.1 is not compatible with previous versions of R8
Optimizasyonlar yalnızca D8 ile bile çalışıyor mu?
Shrinker (R8)
[R8 8.3.21] R8 8.3.21, R8 8.1.56'dan 1,57 MB daha büyük
class.getInterfaces() boş döndürüyor