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

Das Android Gradle-Plug-in 8.2.0 ist eine Hauptversion mit einer Vielzahl neuer Funktionen und Verbesserungen.

Kompatibilität

Das Android Gradle-Plug-in 8.2 unterstützt maximal 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. So können Sie den Java-Basispfad für die Ausführung des Gradle-Daemons (Hintergrundprozess) für Ihr Projekt sicherer und einfacher angeben. Die Pfadselektion wird im Feld java.home 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.

Für neue Projekte 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.

Das neue Makro bietet folgende Vorteile:

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

Behobene Probleme

Android Gradle Plugin 8.2.0

Behobene Probleme
Android Gradle Plugin
Für benutzerdefinierte Quelltypen sollten Quellensätze mit mehreren Varianten erstellt werden.
Die SDK-Versionsüberprüfung berücksichtigt keine Nutzer von SDK-Erweiterungen
DependenciesInfoBuilder benötigt API-Update und -Dokument
DexingNoClasspathTransform (minSdk >= 24) mit Java 11-Ziel schlägt aufgrund fehlender verschachtelter Mitglieder fehl
DslExtension.Builder.extendProjectWith() funktioniert nicht wie in Groovy beschrieben
Fügen Sie die API „VariantSelector.withFlavor“ hinzu, die kotlin.Pair nicht verwendet.
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) hat einen Cache-Miss, da 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 freigeben
Anfrage: Die IDE soll eine Lösung für „PermittedSubclasses requires ASM9“ anbieten
Ziel-Bytecode 17 beim Kompilieren von AGP
VariantManager.getModifiedName entfernen
AndroidTest.packaging.jniLibs.keepDebugSymbols hat keinen Einfluss auf das AndroidTest-Paket
GMD-Instrumentierungstestaufgaben hängen und schlagen beim Neustart fehl
generateLocaleConfig in agp 8.1.0 verwendet eine nicht deterministische Sortierung, wodurch reproduzierbare Builds nicht möglich sind
ProcessApplicationManifest.navigationJsons enthält Dateien mit absoluten Pfaden
Der Zugriff auf GradleBuildProject.Builder über AnalyticsConfiguratorService ist nach dem Erstellen von AnalyticsService nicht zulässig
AndroidTest.packaging.jniLibs.keepDebugSymbols hat keinen Einfluss auf das AndroidTest-Paket
Kompilierung für ungültige Farbwerte erlaubt
Falsches „ReplaceWith“ für VariantBuilder
Gradle 8.1 bricht das Konfigurations-Caching aufgrund von .gradle/.android/analytics.settings ab
In Nachrichten zur Einstellung von Funktionen 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 zwischen ASM-Transformation und toAppend()
Lint-Fehler beim Ausführen von lint mit K2 UAST über Gradle in einem KMP-Projekt beheben
Unterstützung für „missingDimensionStrategy“ auf Variantenebene und möglicherweise „matchingFallback“ für Buildtyp/Variante
„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 Sortierung, wodurch reproduzierbare Builds nicht möglich sind
Anforderungen an die R8-/D8-Version in den AAR-Metadaten angeben (z.B. für coreLibraryDesugaring und neue API-Out-of-lining)
Synchronisierungswarnung: „Auf GradleBuildProject.Builder darf nach dem Erstellen von AnalyticsService nicht über AnalyticsConfiguratorService zugegriffen werden“
Aktualisieren Sie auf Gradle 8.2-Meilenstein oder RC.
Kein Zugriff auf „java.lang.Comparable“
androidResources ist im Android-Bibliotheksmodul nicht verfügbar
Ausführung der Aufgabe „:app:mergeReleaseClasses“ nach dem Aktualisieren des AGP von 8.0.2 auf 8.1.0 fehlgeschlagen
Gradle 8.1 bricht das Konfigurations-Caching aufgrund von .gradle/.android/analytics.settings ab
[AGP 8.1.0] ./gradlew test schlägt mit der Meldung „Manifest-Ausgabe konnte nicht gefunden werden“ fehl, wenn sowohl splits.abi.isEnable als auch testOptions.unitTests.isIncludeAndroidResources auf „wahr“ gesetzt sind
Android Studio Giraffe berücksichtigt „versionCodeOverride“ nicht bei AGP 8.1
AGP 8.1.0 deinstalliert die App nach dem Ausführen von instrumentierten Tests, 7.4.2 nicht
Beim Umwandeln eines APKs tritt ein Fehler mit ListingFileRedirectTask auf
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
Dexer (D8)
Native Datensätze und versiegelte Klassen beim Indexieren für die Mindest-API-Version 34 und höher aktivieren
Fussel
Die Instantiated-Lint-Prüfung behandelt die AppComponentFactory nicht richtig
Lint 8.2.0 Alpha unterstützt weiterhin keine Funktionsimporte auf oberster Ebene in Kotlin
Option hinzufügen, um Zeilen- und Spaltennummern nicht in die Lint-Baseline aufzunehmen
Option hinzufügen, um Zeilen- und Spaltennummern nicht in die Lint-Baseline aufzunehmen
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 Alpha unterstützt weiterhin keine Funktionsimporte 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
Von Android Lint gemeldete unerwartete Probleme aus einem anderen Projekt
Android Lint schlägt bei einer KMP-Bibliothek fehl, da für die Eigenschaft „variantInputs.name“ kein konfigurierter Wert festgelegt ist.
Lint-Integration
Lint-Fehler „DuplicatePlatformClasses“ aufgrund der Abhängigkeit „testImplementation“
Schrumpfgerät (R8)
java.lang.VerifyError: Verifier rejected class
Der Build bleibt bei der Verwendung der Apache POI-Bibliothek bei :minifyReleaseWithR8 hängen
In Kotlin 1.9 werden Kotlin-Lambdas von R8 entfernt, wenn Null-Prüfungen entfernt werden

Android Gradle-Plug-in 8.2.1

Behobene Probleme
Android Gradle Plugin
Deaktivierung der Deaktivierungsaufgabe für Klassen von Unterprojekten, die bereits durch Artefakttransformationen deaktiviert wurden
Android Gradle Plugin failed with JavaVersion.VERSION_11 and OpenJDK 21 ea
Dexer (D8)
Desugar-Einträge für Android U
Schrumpfgerät (R8)
R8 generiert fehlerhaftes dex, was zu einer Klassentypausnahme zur Laufzeit führt
R8 führt zu einer Änderung der Benutzeroberfläche zu einer nicht barrierefreien Benutzeroberfläche
Absturz des R8 Flurry SDK mit AGP 8.2.0
Android - R8 causes subclass of LinearLayoutManager to crash
ClassCastException in R8, wenn das Umpacken aktiviert und Schrumpfen, Verschleierung und Optimierung deaktiviert sind
R8 hängt in BridgeAnalyzer.analyzeMethod
R8 v8.2.33, Laufzeitabsturz nach Upgrade mit der Meldung „java.lang.VerifyError: Bad type on operand stack“

Android Gradle Plugin 8.2.2

Behobene Probleme
Android Gradle Plugin
JaCoCo-Version kann in AGP 8.2.0 nicht festgelegt werden
Dexer (D8)
[Entzugerte Bibliothek] Die Version 2.1 der entzogenen Bibliothek ist nicht mit früheren Versionen von R8 kompatibel
Werden Optimierungen auch nur mit D8 ausgeführt?
Schrumpfgerät (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