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, 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 edinmek için Gradle'ı güncelleme başlıklı makaleyi inceleyin.
SDK Build Tools 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 konusuna bakın.

JDK yolunu belirtmek için yeni makro

#GRADLE_LOCAL_JAVA_HOME, JDK yolunu belirtmek için kullanabileceğiniz yeni bir makrodur. Bu, projeniz için Gradle daemon (arka plan işlemi) yürütme işleminde kullanılan Java ana yolunu belirtmeyi daha güvenli ve kolay hale getirir. Yol seçimi, .gradle/config.properties dosyasındaki java.home alanında saklanır. Bu alanı Android Studio'daki Gradle JDK ayarları üzerinden belirleyin: File (veya macOS'te Android Studio) > Settings > Build, Execution, Deployment > Build Tools > Gradle.

Yeni projelerde varsayılan olarak #GRADLE_LOCAL_JAVA_HOME kullanılır. Mevcut projeler, başarılı bir senkronizasyonun ardından otomatik olarak yeni makroya taşınır. Ancak #JAVA_HOME gibi bir makro kullanıyorsanız bu işlem gerçekleşmez.

Yeni makronun temel avantajları şunlardır:

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

Çözülen sorunlar

Android Gradle eklentisi 8.2.0

Çözülen Sorunlar
Android Gradle eklentisi
Özel kaynak türleri, çok formatlı kaynak kümeleri oluşturmalıdır.
SDK sürümü kontrolü, SDK uzantılarının kullanıcılarını ele almıyor
DependenciesInfoBuilder için API güncellemesi ve doküman gerekiyor
Java 11 hedefiyle DexingNoClasspathTransform (minSdk >= 24) işlemi, iç içe yerleştirilmiş üyeler eksik olduğundan başarısız oluyor
DslExtension.Builder.extendProjectWith() işlevi, Groovy'de belirtildiği gibi çalışmıyor
kotlin.Pair kullanmayan VariantSelector.withFlavor API'sini ekleyin
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) has a cache miss because `proguard.txt` has changed
Uygulama birleştirilmiş manifesti, bağımlılıklardan extractNativeLibs ve useEmbeddedDex özelliklerini içeriyor
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 kullanıma sunma
İstek: IDE, "PermittedSubclasses requires ASM9" hatası için düzeltme önerisinde bulunsun.
AGP'yi derlerken hedef bayt kodu 17
VariantManager.getModifiedName işlevini kaldırın
AndroidTest.packaging.jniLibs.keepDebugSymbols, androidTest paketlemesini etkilemez
GMD enstrümantasyon testi görevleri takılıyor ve yeniden denendiğinde başarısız olmaya başlıyor
AGP 8.1.0'daki generateLocaleConfig, tekrarlanabilir derlemeleri bozan, deterministik olmayan bir sıralama kullanıyor
ProcessApplicationManifest.navigationJsons, mutlak yollara sahip dosyalar içeriyor
AnalyticsService oluşturulduktan sonra AnalyticsConfiguratorService aracılığıyla GradleBuildProject.Builder'a erişime izin verilmez.
AndroidTest.packaging.jniLibs.keepDebugSymbols, androidTest paketlemesini etkilemez
Derleme, yasa dışı renk değerleri için izin verilir.
VariantBuilder için hatalı "ReplaceWith"
Gradle 8.1, .gradle/.android/analytics.settings nedeniyle yapılandırma önbelleğe almayı bozuyor
Kullanımdan kaldırma mesajlarında "ReplaceWith" kullanılmıyor
Varsayılan NDK sürümünü almanın bir yolunu kullanıma sunma
Android Gradle eklentisinin çalışması için Java 17 gerekir.
ASM Transform ve toAppend() uyumsuzluğu
KMP projesinde Gradle üzerinden K2 UAST ile lint çalıştırılırken LintErrors'ı düzeltme
Variant düzeyinde missingDimensionStrategy ve muhtemelen build type/flavor matchingFallback desteği
`android.injected.studio.version`, Android Studio Giraffe'te kaldırıldı
AndroidXDependencyCheck'i devre dışı bırakma özelliği eklendi.
AGP 8.1.0'daki generateLocaleConfig, tekrarlanabilir derlemeleri bozan, deterministik olmayan bir sıralama kullanıyor
AAR meta verilerinde R8 / D8 sürüm şartlarını duyurun (ör. coreLibraryDesugaring ve yeni API'lerin satır dışı bırakılması için)
Senkronizasyon uyarısı: "GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created" ("GradleBuildProject.Builder, AnalyticsService oluşturulduktan sonra AnalyticsConfiguratorService üzerinden erişilmemelidir")
Gradle 8.2 milestone veya RC sürümüne güncelleme
"java.lang.Comparable" öğesine 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örevinin yürütülmesi başarısız oldu
Gradle 8.1, .gradle/.android/analytics.settings nedeniyle yapılandırma önbelleğe almayı bozuyor
[AGP 8.1.0] Hem splits.abi.isEnable hem de testOptions.unitTests.isIncludeAndroidResources doğruysa ./gradlew test, "Unable to find manifest output" (Manifest çıkışı bulunamadı) hatasıyla başarısız oluyor
Android Studio Giraffe, AGP 8.1 ile versionCodeOverride'ı dikkate almıyor
AGP 8.1.0, enstrümanlı testler çalıştırıldıktan sonra uygulamayı kaldırıyor. 7.4.2'de bu sorun yok.
APK dönüştürme işlemi, ListingFileRedirectTask ile ilgili bir hataya neden oluyor
HEDGEHOG REGRESSION: Çalıştır düğmesi birkaç saniye gecikiyor (Creating spec)
Dexer (D8)
34 ve üzeri min-api için dexing yaparken yerel kaydı ve kapalı sınıfları etkinleştirme
Lint
Oluşturulan lint kontrolü, AppComponentFactory'yi iyi şekilde ele almıyor
Lint 8.2.0 alfa sürümleri, Kotlin'de üst düzey işlev içe aktarmalarını hâlâ desteklemiyor.
Lint temel çizgisine satır ve sütun numaralarını dahil etmeme seçeneği ekleyin
Lint temel çizgisine satır ve sütun numaralarını dahil etmeme seçeneği ekleyin
Lint testleri, Java 17 dil özelliklerini desteklemez.
Bumblebee 2021.1.1 Patch 1, commons-io'nun eski bir sürümünün (20030203.000550) 2.11.0'dan daha yeni olduğunu belirtiyor.
Lint 8.2.0 alfa sürümleri, Kotlin'de üst düzey işlev içe aktarmalarını hâlâ desteklemiyor.
Bumblebee 2021.1.1 Patch 1, commons-io'nun eski bir sürümünün (20030203.000550) 2.11.0'dan daha yeni olduğunu belirtiyor.
Android Studio, belirtilen sürümü yanlışlıkla eski olarak işaretliyor.
Lint, K2 UAST kullanılırken UseValueOf sorununu yoksayıyor
Android Lint tarafından işaretlenen başka bir projeden kaynaklanan beklenmedik sorunlar
Android Lint, "property 'variantInputs.name' doesn't have a configured value." (variantInputs.name özelliği yapılandırılmış bir değere sahip değil) hatasıyla KMP kitaplığında başarısız oluyor.
Lint Entegrasyonu
testImplementation bağımlılığından kaynaklanan DuplicatePlatformClasses lint hatası
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Apache POI kitaplığı kullanılırken derleme, :minifyReleaseWithR8 adımında takılıyor
Kotlin 1.9, null denetimleri kaldırılırsa Kotlin lambda'ları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ı, yapay nesne dönüşümleri aracılığıyla zaten dex'e dönüştürülmüşse bu sınıflarda dexing 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 desugar kayıtları
Shrinker (R8)
R8, çalışma zamanında sınıf yayınlama istisnasına neden olan bozuk dex oluşturuyor
R8, arayüzün erişilemeyen bir arayüze değişmesine neden oluyor
AGP 8.2.0 ile R8 Flurry SDK'sının kilitlenmesi
Android - R8, LinearLayoutManager alt sınıfının kilitlenmesine neden oluyor
Yeniden paketleme etkin, küçültme, kod karartma ve optimizasyon devre dışı olduğunda R8'de ClassCastException
R8, BridgeAnalyzer.analyzeMethod içinde takılıyor
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 2.1 sürümü, R8'in önceki sürümleriyle uyumlu değil
Optimizasyonlar yalnızca D8 ile bile çalışır mı?
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