Android Gradle-Plug-in 8.3.0 (Feb. 2024)

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

Kompatibilität

Das Android Gradle-Plug-in 8.3 unterstützt maximal API-Level 34. Weitere Informationen zur Kompatibilität:

Mindestversion Standardversio Hinweise
Gradle 8,4 8,4 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.

Im Android-Gradle-Plug-in 8.3 gibt es folgende neue Funktionen:

Patch-Releases

Im Folgenden finden Sie eine Liste der Patch-Releases in Android Studio Iguana und dem Android Gradle-Plug-in 8.3.

Android Studio Iguana | 2023.2.1 Patch 2 und AGP 8.3.2 (April 2024)

Dieses kleinere Update enthält diese Fehlerkorrekturen.

Android Studio Iguana | 2023.2.1 Patch 1 und AGP 8.3.1 (März 2024)

Dieses kleinere Update enthält diese Fehlerkorrekturen.

Unterstützung von Gradle-Versionskatalogen

Android Studio unterstützt TOML-basierte Gradle-Versionskataloge. Mit dieser Funktion können Sie Abhängigkeiten an einem zentralen Ort verwalten und für mehrere Module oder Projekte freigeben. In Android Studio können Sie Versionskataloge jetzt einfacher konfigurieren, da der Editor Vorschläge macht und die Integration in das Dialogfeld Projektstruktur erfolgt. Weitere Informationen finden Sie unter Gradle-Versionskataloge einrichten und konfigurieren und Build zu Versionskatalogen migrieren.

Codevervollständigung und Navigation

Android Studio bietet Codevervollständigung, wenn Sie einen Versionskatalog im TOML-Dateiformat bearbeiten oder einer Build-Datei eine Abhängigkeit aus einem Versionskatalog hinzufügen. Wenn Sie die Codevervollständigung verwenden möchten, drücken Sie Strg + Leertaste (Befehlstaste + Leertaste unter macOS). Außerdem können Sie schnell von einer Abhängigkeitsreferenz in der build.gradle-Datei Ihrer App zu der Stelle im Versionskatalog wechseln, an der sie deklariert ist. Drücken Sie dazu die Tastenkombination Strg + B (Befehl + B unter macOS).

Codevervollständigung beim Hinzufügen einer Abhängigkeit

Integration in das Dialogfeld „Project Structure“ (Projektstruktur)

Wenn in Ihrem Projekt ein im TOML-Dateiformat definierter Versionskatalog verwendet wird, können Sie die dort definierten Variablen in Android Studio über das Dialogfeld Projektstruktur in der Ansicht Variablen (Datei > Projektstruktur > Variablen) bearbeiten. Für jeden Versionskatalog gibt es ein Drop-down-Menü mit den Variablen aus diesem Katalog. Wenn Sie eine Variable bearbeiten möchten, klicken Sie auf ihren Wert und überschreiben Sie ihn. Wenn Sie diese Änderungen speichern, wird die TOML-Datei entsprechend aktualisiert.

Variablen aus einem Versionskatalog im Dialogfeld „Project Structure“ (Projektstruktur)

Sie können Abhängigkeiten auch im Dialogfeld Projektstruktur in der Ansicht Abhängigkeiten aktualisieren (Datei > Projektstruktur > Abhängigkeiten). Wenn Sie Versionen über das Dialogfeld Projektstruktur aktualisieren möchten, rufen Sie das Modul und die Abhängigkeit auf, die Sie bearbeiten möchten, und aktualisieren Sie dann das Feld Angeforderte Version. Wenn Sie diese Änderungen speichern, wird die TOML-Datei entsprechend aktualisiert. Wenn die Version der Abhängigkeit mit einer Variablen definiert wurde, wird die Variable durch das direkte Aktualisieren der Version durch einen hartcodierten Wert ersetzt. Beachten Sie außerdem, dass eine Abhängigkeit nicht aus dem Versionskatalog entfernt wird, wenn Sie eine Abhängigkeit aus einer Build-Datei entfernen, unabhängig davon, ob Sie das Dialogfeld Projektstruktur verwenden oder nicht.

Abhängigkeiten aus einem Versionskatalog im Dialogfeld „Project Structure“ (Projektstruktur)

Bekannte Probleme und Einschränkungen

Die folgenden Probleme oder Einschränkungen sind beim Support für Gradle-Versionskataloge in Android Studio bekannt.

  • Fehler bei der Hervorhebung von Alias-Deklarationen für Plug-ins in Kotlin-Scriptdateien: Wenn Sie eine Plug-in-Deklaration vom Typ alias(libs.plugins.example) hinzufügen, wird im Editor der Teil libs rot unterstrichen. Dies ist ein bekanntes Problem in Gradle-Versionen 8.0 und niedriger. Es wird in einer zukünftigen Version von Gradle behoben.

  • Android Studio unterstützt nur Versionskataloge im TOML-Format: Derzeit sind die Codevervollständigung, die Navigation und das Dialogfeld „Projektstruktur“ in Android Studio nur für Versionskataloge verfügbar, die im TOML-Dateiformat definiert sind. Sie können jedoch weiterhin einen Versionskatalog direkt in der Datei settings.gradle hinzufügen und seine Abhängigkeiten in Ihrem Projekt verwenden.

  • Navigation für KTS-Builddateien nicht unterstützt: Die Navigation zu einer Abhängigkeitsdefinition in einem Versionskatalog mit Strg + Klick (Befehlstaste + Klick unter macOS) wird für Builddateien, die mit Kotlin-Script geschrieben wurden, noch nicht unterstützt.

  • Firebase Assistant fügt Abhängigkeiten direkt in Build-Scripts hinzu: Firebase Assistant fügt Abhängigkeiten direkt Ihren Build-Scripts hinzu, anstatt sie über Versionskataloge hinzuzufügen.

  • Die Funktion „Verwendungsnachweise finden“ wird nicht unterstützt: Die Suche nach Verwendungen einer Versionskatalogvariablen in anderen Build-Dateien wird noch nicht unterstützt, unabhängig davon, ob die Build-Datei in KTS oder Groovy vorliegt. Das heißt, wenn Sie auf einer Variablendefinition in einem Versionskatalog die Tastenkombination Strg + Klicken (Befehl + Klicken unter macOS) drücken, werden nicht die Build-Dateien geöffnet, in denen die Variable verwendet wird.

  • Im Dialogfeld „Project Structure“ (Projektstruktur) in Android Studio werden mehrere Katalogdateien angezeigt, wenn sie sich im Stammverzeichnis gradle befinden. Kataloge für einen zusammengesetzten Build werden jedoch nicht angezeigt. Wenn Sie beispielsweise zwei Katalogdateien haben – eine für Ihre App und eine für einen zusammengesetzten Build –, wird im Dialogfeld „Project Structure“ (Projektstruktur) nur die App-Katalogdatei angezeigt. Sie können einen zusammengesetzten Build verwenden, müssen aber die TOML-Datei direkt bearbeiten.

Zusätzliche SDK-Statistiken: Richtlinienverstöße

In Android Studio werden für öffentliche SDKs, die im Google Play SDK Index Verstöße gegen die Google Play-Richtlinien aufweisen, Lint-Warnungen in build.gradle.kts- und build.gradle-Dateien sowie im Dialogfeld „Projektstruktur“ angezeigt. Sie sollten alle Abhängigkeiten aktualisieren, die gegen die Play-Richtlinien verstoßen, da diese Verstöße verhindern können, dass Sie in Zukunft in der Google Play Console veröffentlichen können. Die Warnungen zu Richtlinienverstößen ergänzen die Warnungen zu veralteten Versionen, die in Android Studio angezeigt werden.

Unterstützung für Android Studio-Versionen von compileSdk

In Android Studio wird eine Warnung angezeigt, wenn in Ihrem Projekt eine compileSdk verwendet wird, die von der aktuellen Version von Android Studio nicht unterstützt wird. Sofern verfügbar, wird auch empfohlen, zu einer Version von Android Studio zu wechseln, die die compileSdk unterstützt, die in Ihrem Projekt verwendet wird. Beachten Sie, dass beim Upgrade von Android Studio möglicherweise auch ein Upgrade von AGP erforderlich ist. AGP zeigt außerdem im Toolfenster Build eine Warnung an, wenn die von Ihrem Projekt verwendete compileSdk von der aktuellen Version von AGP nicht unterstützt wird.

Änderungen am Lint-Verhalten

Ab dem Android Gradle-Plug-in 8.3.0-alpha02 werden beim Ausführen von Lint für ein Modul separate Lint-Analyseaufgaben für die Haupt- und Testkomponenten des Moduls ausgeführt. Mit dieser Änderung soll die Leistung verbessert werden. Wenn Sie zum vorherigen Verhalten zurückkehren möchten, legen Sie android.experimental.lint.analysisPerComponent=false in Ihrer gradle.properties-Datei fest.

Genaue Ressourcenverkleinerung standardmäßig aktiviert

Die genaue Ressourcenverkleinerung, bei der nicht verwendete Einträge aus der Datei resources.arsc entfernt und nicht verwendete Ressourcendateien eliminiert werden, ist standardmäßig aktiviert. Wenn diese Funktion aktiviert ist, wird Ihre Ressourcentabelle reduziert und nur die referenzierten res-Ordnereinträge werden in das APK aufgenommen.

Wenn Sie die genaue Ressourcenverkleinerung deaktivieren möchten, setzen Sie in der Datei gradle.properties Ihres Projekts android.enableNewResourceShrinker.preciseShrinking auf false.

Behobene Probleme

Android Gradle Plugin 8.3.0

Behobene Probleme
Android Gradle Plugin
Build-Cache ist für die Aufgabe „PackageForUnitTest“ redundant
[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
AGP-Modellaufbau schlägt bei verschachtelten Gradle-Komposit-Builds fehl
Resource Shrinker beschädigt Ressourcen-IDs, was zu Laufzeitabstürzen führt
Die Prüfung der Mindest-Gradle-Version wird beim zweiten Build und danach nicht ausgeführt
Ausführung der Aufgabe „:app:mergeReleaseClasses“ nach dem Aktualisieren des AGP von 8.0.2 auf 8.1.0 fehlgeschlagen
[Gradle 8.4][upgrade] Integrationstest nach Upgrade fehlgeschlagen, da verworfene Funktion im Kotlin-Gradle-Plug-in verwendet wurde
Keine Prüfung auf Vorhandensein von Manifest-Overlay-Dateien während der Konfigurationsphase
Broken link to Gradle doc on MergeJavaResWorkAction error
Gradle 8.1 bricht das Konfigurations-Caching aufgrund von .gradle/.android/analytics.settings ab
AGP darf ProjectComponentIdentifier.projectPath nicht ohne ProjectComponentIdentifier.build verwenden.
Bitte reduzieren oder entfernen Sie die Protokollierung auf Informationsebene für AGP „Analytics other plugin to proto: ...“
[Gradle 8.4][upgrade] Dateioperation während der Konfiguration in ProcessJavaResTask bricht das Konfigurations-Caching ab
Variant API zum Abrufen der Symboltabelle (R.txt)
Das eigenständige lint-Plug-in verarbeitet die Abhängigkeit von gradleApi() nicht richtig
Schlechte KDocs zu AGP-Klassen/-Eigenschaften. „VariantOutput.enable“ sollte durch „VariantOutput.enable“ ersetzt werden
Mit AGP 8.3.0-alpha02 können keine Release-Profile auf Windows-Hosts installiert werden
Erzwingen von „android.enableDexingArtifactTransform=true“
[Gradle 8.4][upgrade] Integrationstest nach Upgrade aufgrund von Dateibehandlung in der Konfigurationsphase fehlgeschlagen
AGP 8.3.0-alpha-02 – Fehler: „Failed to deserialize cached resource repository.“
[Gradle 8.4][upgrade] Integrationstest fehlgeschlagen nach Upgrade aufgrund der Dateibehandlung in der Konfigurationsphase von TestLabBuildService
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
Beim Transformieren des ASSETS-Artefakts werden fehlerhafte Eingabe-/Ausgabeorte angegeben
android.experimental.r8.dex-startup-optimization=true als Standard festlegen
Zur neuen Gradle Configuration Alignment API migrieren
Die Ressourcenkompilierung schlägt fehl, wenn der Kotlin-Compiler versucht, auf IDEA 21.3 zu aktualisieren
Reaktive get()-Funktion mit der Artifacts API
Die AGP-Property „android.lint.printStackTrace“ wird zur stabilen Version hochgestuft
AGP 8.1.0: Dynamische Funktion: Implizite Abhängigkeit zwischen exportReleaseConsumerProguardFiles und extractProguardFiles führt zu Kompilierungsfehlern
`variant.unitTest.jniLibs.addGeneratedSourceDirectory` hat keine Auswirkungen
Aktualisierung des in AGP verwendeten XML-Parsers für die Kompatibilität mit Gradle 8.4
Jacoco-Instrument im AGP 8.0.1-Release-Paket wird nicht angewendet
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
AGP 8.3.0-alpha11 erzeugt ein Release-APK, das beim Starten mit android.content.res.Resources$NotFoundException abstürzt
Die AGP-Property „android.lint.printStackTrace“ wird zur stabilen Version hochgestuft
Funktionsanfrage: com.android.build.api.extension.impl.CURRENT_AGP_VERSION in eine öffentliche API aufnehmen
SDK Manager sollte keine Log-Informationen mehr an stdout senden
DexArchiveBuilderTaskDelegate ist mit einem Bibliotheksmodul ohne Code fehlgeschlagen
AGP7.4 custom plugin variant toTransform for all throw duplicate entry: META-INF/MANIFEST.MF exception
Unterstützung neuer Manifest-Tags,
Der Link zu „Entkoppelte Projekte“ in den Studio-Einstellungen führt zur falschen Seite.
Bitte geben Sie Optionen an, um generierte Quellen in Javadoc und SourceJar aufzunehmen.
Schnelle Lösung für Abweichungen zwischen compileSdk und Abhängigkeit mit minCompileSdkVersion erforderlich
[Gradle] „tools:overrideLibrary“ sollte das Sternchen (*) unterstützen
UI-Einfrieren beim Bearbeiten des Manifests
JaCoCo-Version kann in AGP 8.2.0 nicht festgelegt werden
Installationsaufgabe des Android Gradle-Plug-ins 8.2.0 in einem Projekt mit dynamischen Funktionen schlägt fehl
Installationsaufgabe des Android Gradle-Plug-ins 8.2.0 in einem Projekt mit dynamischen Funktionen schlägt fehl
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?
Fussel
[Lint] TranslucentViewDetector stürzt in der Funktion „filterIncident“ ab und führt dazu, dass lint ein falsches Ergebnis liefert
TranslucentViewDetector sollte den Wert „behind“ akzeptieren
Android Lint schlägt bei einer KMP-Bibliothek fehl, da für die Eigenschaft „variantInputs.name“ kein konfigurierter Wert festgelegt ist.
TranslucentViewDetector meldet falsche Zeile im Manifest
lintDebug meldet bei Verwendung von Projektabhängigkeiten fälschlicherweise Warnungen vom Typ „UseTomlInstead“
Von Android Lint gemeldete unerwartete Probleme aus einem anderen Projekt
LINT-Prüfung auf falsch positive Erkennung nicht verwendeter Ressourcen in Bindungen und Klick-Listenern
Benutzerdefinierte JAR-Datei für Lint-Prüfung konnte nicht geladen werden: Knoten kann nicht in TreeNode umgewandelt werden
Lint visitAnnotationUsage wird nicht für die Verwendung von annotieren Klassen in Variablendeklarationen aufgerufen
Lint 31.0.2 schlägt mit java.util.NoSuchElementException fehl: Array is empty.
Keine Lint-Warnung, dass für kotlin.text.MatchNamedGroupCollection#get(String) API 26 erforderlich ist
lint:TypographyQuotes false negatives: more than one escaped apostrophe are ignored
Falsch positives Ergebnis des AGP 8.0.2-Lint-InvalidId-Detektors
LintError-Probleme wurden den Lint-Baselines hinzugefügt
Quickfix Lint funktioniert nicht und führt zu einem IDE-Fehler
Inkonsistenter Testfehler aufgrund unvollständiger Analyse
Falsch hervorgehobene Warnung
Lint visitAnnotationUsage wird nicht für die Verwendung von annotieren Klassen in Variablendeklarationen aufgerufen
Der Prozessor für nicht verwendete Ressourcen löscht möglicherweise die Gradle-Builddatei
Die NewApi-Lint-Prüfung versteht das finale Feld „isAtleastU() && otherCondition()“ nicht
StackOverflow von `LintClient.getSdkHome`
Android Studio / Lint gibt nicht an, wenn „Plattform“-Abhängigkeiten veraltet sind
Fehler: Kein Vorschlag zur Aktualisierung der Firebase-BOM-Abhängigkeit
Die Projektstruktur (und Gradle (?)) erkennt keine Firebase-BOM-Abhängigkeiten, die auf eine neuere Version umgestellt werden müssen.
Lint-Integration
Lint-Fehler „DuplicatePlatformClasses“ aufgrund der Abhängigkeit „testImplementation“
Schrumpfgerät (R8)
R8 funktioniert nach dem Upgrade von AGP 8.0.2 auf 8.1.0 nicht
isShrinkResources führt in 8.3.0-alpha11 bis alpha14 zu einer Überoptimierung
Absturz des R8 Flurry SDK mit AGP 8.2.0
Android - R8 causes subclass of LinearLayoutManager to crash
R8 v8.2.33, Laufzeitabsturz nach Upgrade mit der Meldung „java.lang.VerifyError: Bad type on operand stack“
[R8 8.3.21] R8 8.3.21 ist 1,57 MB größer als R8 8.1.56
[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
Test SimpleKotlinEnumUnboxingTest fails on kotlin_dev bot

Android Gradle Plugin 8.3.1

Behobene Probleme
Android Gradle Plugin
Problem bei der Verarbeitung inkrementeller Eingaben für MergeJavaResourcesTask
Lint-Integration
Lint kann die Typen von übergeordneten Quellsätzen in AGP 8.3.0-rc02 nicht auflösen

Android Gradle Plugin 8.3.2

Behobene Probleme
Android Gradle Plugin
Bei AGP 8.3 mit aktivierter Desugaring kann es zu einem Deadlock kommen
AGP 8.3 bricht die Aufgabe „zipApksFor“ ab
Lint-Integration
Lint kann eine KMP-Abhängigkeit nicht eindeutig identifizieren