Android Gradle-Plug-in 8.2.0 (Nov. 2023)

Das Android-Gradle-Plug-in 8.2.0 ist eine Hauptversion mit vielen neuen Funktionen und Verbesserungen.

Kompatibilität

Das maximale API-Level, das vom Android-Gradle-Plugin 8.2 unterstützt wird, ist API-Level 34. Weitere Informationen zur Kompatibilität:

Mindestversion Standardversio Hinweise
Gradle 8.2 8.2 Weitere Informationen finden Sie unter Gradle aktualisieren.
SDK-Build-Tools 34.0.0 34.0.0 Installieren oder Konfigurieren Sie die SDK-Build-Tools.
NDK 25.1.8937393 Installieren oder konfigurieren Sie eine andere Version des NDK.
JDK 17 17 Weitere Informationen finden Sie unter JDK-Version festlegen.

Neues Makro zum Angeben des JDK-Pfads

#GRADLE_LOCAL_JAVA_HOME ist ein neues Makro, mit dem Sie den JDK-Pfad angeben können. Dadurch wird es sicherer und einfacher, den Java-Home-Pfad anzugeben, der für die Ausführung des Gradle-Daemons (Hintergrundprozess) für Ihr Projekt verwendet wird. Die Pfadauswahl wird im Feld java.home in der Datei .gradle/config.properties gespeichert. Legen Sie dieses Feld über die Gradle-JDK-Einstellungen in Android Studio fest: File (oder Android Studio unter macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle.

In neuen Projekten wird standardmäßig #GRADLE_LOCAL_JAVA_HOME verwendet. Vorhandene Projekte werden nach einer erfolgreichen Synchronisierung automatisch zur neuen Makrovariablen migriert, sofern Sie nicht bereits eine Makrovariable wie #JAVA_HOME verwenden.

Die wichtigsten Vorteile des neuen Makros:

  • Sie können den JDK-Pfad manuell ändern, um die Synchronisierung auszulösen, ohne das Projekt zuerst öffnen zu müssen.
  • Weniger Fehler im Zusammenhang mit inkompatiblen Gradle- und Projekt-JDK-Versionen, da es eine einzige Quelle für die Auswahl des Gradle-JDK gibt.

Behobene Probleme

Android-Gradle-Plug-in 8.2.0

Behobene Probleme
Android-Gradle-Plug-in
Benutzerdefinierte Quelltypen sollten Quellsätze mit mehreren Varianten erstellen
Bei der Prüfung der SDK-Version werden Nutzer von SDK-Erweiterungen nicht berücksichtigt.
DependenciesInfoBuilder erfordert API-Update und Dokumentation
DexingNoClasspathTransform (minSdk >= 24) mit Java 11-Ziel schlägt aufgrund fehlender Nest-Mitglieder fehl
DslExtension.Builder.extendProjectWith() funktioniert in Groovy nicht wie beschrieben
Die API „VariantSelector.withFlavor“ wurde hinzugefügt, die nicht „kotlin.Pair“ verwendet.
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) has a cache miss because `proguard.txt` has changed (AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) hat einen Cache-Fehler, weil sich „proguard.txt“ geändert hat)
Das zusammengeführte App-Manifest enthält die Attribute „extractNativeLibs“ und „useEmbeddedDex“ aus Abhängigkeiten
AIDL schlägt mit Build-Tools 33.0.0 fehl
AGP: Pfad zum AIDL-Tool und zur AIDL-Framework-Datei als öffentliche API verfügbar machen
Anfrage: Die IDE soll eine Korrektur für „PermittedSubclasses requires ASM9“ anbieten.
Bytecode-Zielversion 17 beim Kompilieren von AGP
VariantManager.getModifiedName entfernen
„androidTest.packaging.jniLibs.keepDebugSymbols“ wirkt sich nicht auf das Verpacken von „androidTest“ aus
GMD-Instrumentierungstest-Tasks hängen und schlagen beim Wiederholen fehl
generateLocaleConfig in AGP 8.1.0 verwendet eine nicht deterministische Reihenfolge, wodurch reproduzierbare Builds nicht mehr möglich sind
ProcessApplicationManifest.navigationJsons enthält Dateien mit absoluten Pfaden
Der Zugriff auf GradleBuildProject.Builder über AnalyticsConfiguratorService ist nach der Erstellung von AnalyticsService nicht zulässig.
„androidTest.packaging.jniLibs.keepDebugSymbols“ wirkt sich nicht auf das Verpacken von „androidTest“ aus
Kompilierung bei unzulässigen Farbwerten zulässig
Falscher „ReplaceWith“-Wert für VariantBuilder
Gradle 8.1 unterbricht das Konfigurations-Caching aufgrund von .gradle/.android/analytics.settings
In Nachrichten zur Einstellung von Features wird `ReplaceWith` nicht verwendet
Möglichkeit zum Abrufen der Standard-NDK-Version bereitstellen
Für das Android-Gradle-Plug-in ist Java 17 erforderlich.
Inkompatibilität von ASM-Transformation und toAppend()
Lint-Fehler beheben, wenn Lint mit K2 UAST über Gradle in einem KMP-Projekt ausgeführt wird
Unterstützung für „missingDimensionStrategy“ auf Variante-Ebene und möglicherweise „build type“/„flavor matchingFallback“
`android.injected.studio.version` wurde in Android Studio Giraffe entfernt
Möglichkeit zum Deaktivieren von „AndroidXDependencyCheck“ hinzugefügt
generateLocaleConfig in AGP 8.1.0 verwendet eine nicht deterministische Reihenfolge, wodurch reproduzierbare Builds nicht mehr möglich sind
R8-/D8-Versionsanforderungen in AAR-Metadaten bewerben (z.B. für coreLibraryDesugaring und neue API-Out-of-Lining)
Synchronisierungswarnung: „GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created“ (Auf GradleBuildProject.Builder sollte nach der Erstellung von AnalyticsService nicht über AnalyticsConfiguratorService zugegriffen werden)
Auf Gradle 8.2-Meilenstein oder ‑RC aktualisieren
Kein Zugriff auf „java.lang.Comparable“ möglich
androidResources ist im Android-Bibliotheksmodul nicht verfügbar
Ausführung der Aufgabe „:app:mergeReleaseClasses“ nach Aktualisierung von AGP von 8.0.2 auf 8.1.0 fehlgeschlagen
Gradle 8.1 unterbricht das Konfigurations-Caching aufgrund von .gradle/.android/analytics.settings
[AGP 8.1.0] ./gradlew test schlägt mit „Unable to find manifest output“ fehl, wenn sowohl „splits.abi.isEnable“ als auch „testOptions.unitTests.isIncludeAndroidResources“ auf „true“ gesetzt sind.
Android Studio Giraffe berücksichtigt „versionCodeOverride“ mit AGP 8.1 nicht
AGP 8.1.0 deinstalliert App nach Ausführung instrumentierter Tests – 7.4.2 nicht
Beim Transformieren eines APKs tritt ein Fehler mit ListingFileRedirectTask auf
HEDGEHOG REGRESSION: Die Schaltfläche „Ausführen“ wird um einige Sekunden verzögert angezeigt (Spezifikation wird erstellt)
Dexer (D8)
Native Record- und Sealed-Klassen beim Dexing für min-API 34 und höher aktivieren
Lint
Instanziierter Lint-Check verarbeitet AppComponentFactory nicht richtig
Lint 8.2.0-Alphas unterstützen weiterhin keine Importe von Funktionen auf oberster Ebene in Kotlin.
Option zum Ausschließen von Zeilen- und Spaltennummern aus der Lint-Baseline hinzufügen
Option zum Ausschließen von Zeilen- und Spaltennummern aus der Lint-Baseline hinzufügen
Lint-Tests unterstützen keine Java 17-Sprachfunktionen
Bumblebee 2021.1.1 Patch 1 gibt an, dass eine alte Version (20030203.000550) von commons-io neuer als 2.11.0 ist.
Lint 8.2.0-Alphas unterstützen weiterhin keine Importe von Funktionen auf oberster Ebene in Kotlin.
Bumblebee 2021.1.1 Patch 1 gibt an, dass eine alte Version (20030203.000550) von commons-io neuer als 2.11.0 ist.
Android Studio kennzeichnet die angegebene Version fälschlicherweise als veraltet.
Lint ignoriert das Problem „UseValueOf“ bei Verwendung von K2 UAST
Unerwartete Probleme aus einem anderen Projekt, die von Android Lint gemeldet werden
Android Lint schlägt bei einer KMP-Bibliothek mit der Meldung „property 'variantInputs.name' doesn't have a configured value.“ fehl.
Lint-Integration
„DuplicatePlatformClasses“-Lint-Fehler aufgrund von „testImplementation“-Abhängigkeit
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Der Build bleibt bei „:minifyReleaseWithR8“ hängen, wenn die Apache POI-Bibliothek verwendet wird
Kotlin 1.9 führt dazu, dass Kotlin-Lambdas von R8 zerstört werden, wenn Nullprüfungen entfernt werden

Android-Gradle-Plug-in 8.2.1

Behobene Probleme
Android-Gradle-Plug-in
Die Dexing-Aufgabe für die Klassen von Unterprojekten nicht ausführen, wenn sie bereits durch Artefakttransformationen dexed wurden
Android-Gradle-Plug-in ist mit JavaVersion.VERSION_11 und OpenJDK 21 ea fehlgeschlagen
Dexer (D8)
Desugar-Datensätze für Android U
Shrinker (R8)
R8 generiert fehlerhaften DEX-Code, der zur Laufzeit eine ClassCastException auslöst
R8 führt dazu, dass die Schnittstelle in eine nicht zugängliche Schnittstelle geändert wird
R8-Absturz des Flurry SDK mit AGP 8.2.0
Android – R8 verursacht Absturz von Unterklasse von LinearLayoutManager
ClassCastException in R8, wenn das Umpacken aktiviert und das Verkleinern, die Verschleierung und die Optimierung deaktiviert sind
R8 bleibt in BridgeAnalyzer.analyzeMethod hängen
R8 v8.2.33, Laufzeitabsturz „java.lang.VerifyError: Bad type on operand stack“ nach Upgrade

Android-Gradle-Plug-in 8.2.2

Behobene Probleme
Android-Gradle-Plug-in
JaCoCo-Version in AGP 8.2.0 kann nicht festgelegt werden
Dexer (D8)
[desugared library] Desugared Library-Version 2.1 ist nicht mit früheren Versionen von R8 kompatibel
Werden Optimierungen auch mit D8 ausgeführt?
Shrinker (R8)
[R8 8.3.21] R8 8.3.21 ist 1,57 MB größer als R8 8.1.56
class.getInterfaces() gibt leer zurück