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

Das Android-Gradle-Plug-in 8.2.0 ist ein wichtiger Release, der eine Vielzahl neuer Funktionen und Verbesserungen enthält.

Kompatibilität

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

Mindestversion Standardversion 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 Sie 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 (Datei) (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 zum neuen Makro migriert, es sei denn, Sie verwenden bereits ein Makro wie #JAVA_HOME.

Die wichtigsten Vorteile des neuen Makros:

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

Behobene Probleme

Android-Gradle-Plug-in 8.2.2

Behobene Probleme
Android-Gradle-Plug-in
JaCoCo-Version kann in AGP 8.2.0 nicht festgelegt werden
Dexer (D8)
[Desugared Library] Desugared Library Version 2.1 ist nicht mit früheren Versionen von R8 kompatibel
Werden Optimierungen auch nur 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

Android-Gradle-Plug-in 8.2.1

Behobene Probleme
Android-Gradle-Plug-in
Dexing-Aufgabe nicht für Klassen von Unterprojekten ausführen, wenn sie bereits durch Artefaktransformationen dexed wurden
Android-Gradle-Plug-in mit JavaVersion.VERSION_11 und OpenJDK 21 ea fehlgeschlagen
Dexer (D8)
Desugar-Datensätze für Android U
Shrinker (R8)
R8 generiert fehlerhaftes Dex, was zu einer ClassCastException zur Laufzeit führt
R8 verursacht Änderung der Schnittstelle zu einer nicht zugänglichen Schnittstelle
R8 Flurry SDK-Absturz mit AGP 8.2.0
Android – R8 verursacht Absturz der Unterklasse von LinearLayoutManager
ClassCastException in R8, wenn das Neuverpacken aktiviert ist und das Shrinking, 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.0

Behobene Probleme
Android-Gradle-Plug-in
Benutzerdefinierte Quelltypen sollten Source-Sets mit mehreren Flavors erstellen
Bei der Überprü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-Member fehl
DslExtension.Builder.extendProjectWith() funktioniert in Groovy nicht wie beschrieben
Fügen Sie die VariantSelector.withFlavor API hinzu, die nicht kotlin.Pair verwendet
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) hat einen Cache-Fehler, weil sich `proguard.txt` geändert hat
Das zusammengeführte Manifest der App 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-Datei des Frameworks als öffentliche API verfügbar machen
Anfrage: IDE soll eine Lösung für „PermittedSubclasses requires ASM9“ anbieten
Bytecode 17 beim Kompilieren von AGP verwenden
VariantManager.getModifiedName entfernen
AndroidTest.packaging.jniLibs.keepDebugSymbols wirkt sich nicht auf die AndroidTest-Verpackung aus
GMD-Instrumentierungstestaufgaben bleiben hängen und schlagen bei Wiederholungsversuchen fehl
generateLocaleConfig in AGP 8.1.0 verwendet eine nicht deterministische Reihenfolge, was zu nicht reproduzierbaren Builds führt
ProcessApplicationManifest.navigationJsons enthält Dateien mit absoluten Pfaden
Der Zugriff auf GradleBuildProject.Builder über AnalyticsConfiguratorService ist nicht zulässig, nachdem AnalyticsService erstellt wurde
AndroidTest.packaging.jniLibs.keepDebugSymbols wirkt sich nicht auf die AndroidTest-Verpackung aus
Kompilierung für ungültige Farbwerte zulässig
Falsches „ReplaceWith“ 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 verfügbar machen
Für das Android-Gradle-Plug-in ist Java 17 erforderlich
Inkompatibilität zwischen 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 Variant-Ebene und möglicherweise build type/flavor matchingFallback
`android.injected.studio.version` wurde in Android Studio Giraffe entfernt
Möglichkeit zum Deaktivieren von AndroidXDependencyCheck hinzufügen
generateLocaleConfig in AGP 8.1.0 verwendet eine nicht deterministische Reihenfolge, was zu nicht reproduzierbaren Builds führt
R8-/D8-Versionsanforderungen in AAR-Metadaten angeben (z.B. für coreLibraryDesugaring und neue API-Auslagerung)
Synchronisierungswarnung: „GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created“ (Auf GradleBuildProject.Builder sollte nicht über AnalyticsConfiguratorService zugegriffen werden, nachdem AnalyticsService erstellt wurde)
Auf Gradle 8.2 Milestone 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“ (Manifestausgabe nicht gefunden) 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 die App nach der Ausführung instrumentierter Tests – 7.4.2 nicht
Die Transformation eines APK führt zu einem Fehler mit ListingFileRedirectTask
HEDGEHOG-REGRESSION: Die Schaltfläche „Ausführen“ wird um einige Sekunden verzögert (Spezifikation wird erstellt)
Dexer (D8)
Native Datensätze und versiegelte Klassen beim Dexing für min-API 34 und höher aktivieren
Lint
Die instanziierte Lint-Prüfung verarbeitet AppComponentFactory nicht gut
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 in der Lint-Baseline hinzufügen
Option zum Ausschließen von Zeilen- und Spaltennummern in 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 markiert die angegebene Version fälschlicherweise als veraltet.
Lint ignoriert das Problem „UseValueOf“, wenn K2 UAST verwendet wird
Unerwartete Probleme aus einem anderen Projekt, die von Android Lint gemeldet werden
Android Lint schlägt in einer KMP-Bibliothek mit `property 'variantInputs.name' doesn't have a configured value.` (Für die Property „variantInputs.name“ ist kein Wert konfiguriert) fehl
Lint-Integration
Lint-Fehler „DuplicatePlatformClasses“ aus der Abhängigkeit „testImplementation“
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class (Bestätiger hat Klasse abgelehnt)
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