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 maximale API-Level, das vom Android-Gradle-Plugin 8.3 unterstützt wird, ist 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 sind folgende neue Funktionen verfügbar.

Patch releases

Im Folgenden finden Sie eine Liste der Patch-Releases in Android Studio Iguana und 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 Abhängigkeiten für Module oder Projekte freigeben. In Android Studio ist es jetzt einfacher, Versionskataloge zu konfigurieren. Dazu werden Vorschläge im Editor und eine Integration in das Dialogfeld Projektstruktur verwendet. Informationen zum Einrichten und Konfigurieren von Gradle-Versionskatalogen Informationen zum Migrieren Ihres Builds zu Versionskatalogen

Codevervollständigung und ‑navigation

Android Studio bietet die automatische Vervollständigung von Code, wenn Sie einen Versionskatalog im TOML-Dateiformat bearbeiten oder eine Abhängigkeit aus einem Versionskatalog in eine Build-Datei einfügen. Wenn Sie die Codevervollständigung verwenden möchten, drücken Sie Strg + Leertaste (Befehlstaste + Leertaste auf macOS). Außerdem können Sie schnell von einem Abhängigkeitsverweis in der build.gradle-Datei Ihrer App zu der Stelle navigieren, an der er im Versionskatalog deklariert ist. Drücken Sie dazu 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 Versionskatalog verwendet wird, der im TOML-Dateiformat definiert ist, können Sie die darin 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 (Datei > Projektstruktur > Abhängigkeiten) aktualisieren. 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 Angefragte Version. Wenn Sie diese Änderungen speichern, wird die TOML-Datei entsprechend aktualisiert. Wenn die Abhängigkeitsversion mit einer Variablen definiert wurde, wird die Variable durch das direkte Aktualisieren der Version durch einen fest codierten Wert ersetzt. Wenn Sie eine Abhängigkeit aus einer Build-Datei entfernen, wird sie nicht aus dem Versionskatalog entfernt, unabhängig davon, ob Sie das Dialogfeld Projektstruktur verwenden.

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

Bekannte Probleme und Einschränkungen

Die folgenden Probleme oder Einschränkungen sind bei der Unterstützung von Gradle-Versionskatalogen in Android Studio bekannt.

  • Fehler beim Hervorheben von Aliasdeklarationen für Plug-ins in Kotlin-Skriptdateien: Wenn Sie eine Plug-in-Deklaration der Form 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ützung nur für Versionskataloge im TOML-Format: Derzeit sind die Android Studio-Unterstützung für die automatische Vervollständigung von Code, die Navigation und das Dialogfeld „Projektstruktur“ 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-Build-Dateien nicht unterstützt: Das Aufrufen einer Abhängigkeitsdefinition in einem Versionskatalog mit Strg+Klick (Befehlstaste+Klick unter macOS) wird für Build-Dateien, die mit Kotlin-Script geschrieben wurden, noch nicht unterstützt.

  • Firebase Assistant fügt Abhängigkeiten direkt in Build-Skripten hinzu: Der Firebase Assistant fügt Abhängigkeiten direkt in Ihre Build-Skripte ein, anstatt über Versionskataloge.

  • Funktion „Verwendungen suchen“ 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 ist. Das heißt, wenn Sie in einem Versionskatalog mit Strg+Klick (Befehl+Klick unter macOS) auf eine Variablendefinition klicken, werden Sie nicht zu den Build-Dateien weitergeleitet, in denen die Variable verwendet wird.

  • Im Dialogfeld „Project Structure“ (Projektstruktur) in Android Studio werden mehrere Katalogdateien angezeigt, wenn sie sich im Stammordner 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 Composite 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 Lint-Warnungen in build.gradle.kts- und build.gradle-Dateien sowie im Dialogfeld „Projektstruktur“ für öffentliche SDKs angezeigt, die Richtlinienverstöße bei Google Play im Google Play SDK Index aufweisen. Sie sollten alle Abhängigkeiten aktualisieren, die gegen die Play-Richtlinien verstoßen, da diese Verstöße verhindern könnten, dass Sie in Zukunft in der Google Play Console veröffentlichen. Die Warnungen zu Richtlinienverstößen ergänzen die Warnungen zu veralteten Versionen, die in Android Studio angezeigt werden.

Unterstützung der compileSdk-Version in Android Studio

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. Falls verfügbar, wird auch vorgeschlagen, zu einer Version von Android Studio zu wechseln, die die von Ihrem Projekt verwendete compileSdk unterstützt. Wenn Sie Android Studio aktualisieren, müssen Sie möglicherweise auch AGP aktualisieren. AGP zeigt außerdem eine Warnung im Toolfenster Build an, wenn die compileSdk, die von Ihrem Projekt verwendet wird, von der aktuellen Version von AGP nicht unterstützt wird.

Änderungen am Lint-Verhalten

Ab 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. Der Grund für diese Änderung ist die Verbesserung der Leistung. Wenn Sie zum früheren Verhalten zurückkehren möchten, legen Sie android.experimental.lint.analysisPerComponent=false in Ihrer gradle.properties-Datei fest.

Präzise Entfernung von Ressourcen standardmäßig aktiviert

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

Wenn Sie die präzise Ressourcenverkleinerung deaktivieren möchten, legen Sie in der Datei gradle.properties Ihres Projekts android.enableNewResourceShrinker.preciseShrinking auf false fest.

Behobene Probleme

Android-Gradle-Plug-in 8.3.0

Behobene Probleme
Android-Gradle-Plug-in
Der Build-Cache ist für die Aufgabe „PackageForUnitTest“ redundant.
[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.
AGP-Modell wird nicht erstellt, wenn verschachtelte zusammengesetzte Gradle-Builds verwendet werden
Resource Shrinker ändert Ressourcen-IDs, was zu Laufzeitabstürzen führt
Die Prüfung der Mindest-Gradle-Version wird beim zweiten und allen nachfolgenden Builds nicht ausgeführt.
Ausführung der Aufgabe „:app:mergeReleaseClasses“ nach Aktualisierung von AGP von 8.0.2 auf 8.1.0 fehlgeschlagen
[Gradle 8.4][upgrade] Integrationstest schlägt nach Upgrade aufgrund der Verwendung eines verworfenen Features im Kotlin-Gradle-Plug-in fehl
Während der Konfigurationsphase wird nicht geprüft, ob Manifest-Overlay-Dateien vorhanden sind.
Defekter Link zur Gradle-Dokumentation zum Fehler „MergeJavaResWorkAction“
Gradle 8.1 unterbricht das Konfigurations-Caching aufgrund von .gradle/.android/analytics.settings
AGP sollte 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] File operation during configuration in ProcessJavaResTask breaks config caching
Variant API zum Abrufen der Symboltabelle (R.txt)
Das eigenständige Lint-Plug-in verarbeitet die gradleApi()-Abhängigkeit nicht richtig
Schlechte kDocs für AGP-Klassen/Attribute. `VariantOutput.enable` deutet darauf hin, dass es durch `VariantOutput.enable` ersetzt werden sollte.
Mit AGP 8.3.0-alpha02 können keine Release-Profile auf Windows-Hosts installiert werden
`android.enableDexingArtifactTransform=true` erzwingen
[Gradle 8.4][upgrade] Integrationsfehler nach dem Upgrade aufgrund der Dateiverarbeitung in der Konfigurationsphase
AGP 8.3.0-alpha-02 – „Error: Failed to deserialize cached resource repository.“
[Gradle 8.4][upgrade] Integrationsfehler nach dem Upgrade aufgrund der Dateiverarbeitung in der Konfigurationsphase von TestLabBuildService
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
Durch die Transformation des ASSETS-Artefakts werden fehlerhafte Ein-/Ausgabeorte angegeben.
android.experimental.r8.dex-startup-optimization=true als Standard festlegen
Zur neuen API zur Angleichung der Gradle-Konfiguration migrieren
Die Ressourcenkompilierung schlägt fehl, wenn der Kotlin-Compiler versucht, auf IDEA 21.3 zu aktualisieren
Reaktives get() mit der Artifacts API
AGP-Property „android.lint.printStackTrace“ auf stabil umstellen
AGP 8.1.0: Dynamisches Modul: Implizite Abhängigkeit zwischen „exportReleaseConsumerProguardFiles“ und „extractProguardFiles“ führt zu Kompilierungsfehlern
`variant.unitTest.jniLibs.addGeneratedSourceDirectory` scheint nichts zu bewirken
XML-Parser in AGP für die Kompatibilität mit Gradle 8.4 aktualisieren
Das Release-Paket für AGP 8.0.1 „jacoco instrument“ wird nicht angewendet
HEDGEHOG REGRESSION: Die Schaltfläche „Ausführen“ wird um einige Sekunden verzögert angezeigt (Spezifikation wird erstellt)
Mit AGP 8.3.0-alpha11 erstellte Release-APKs stürzen beim Start mit „android.content.res.Resources$NotFoundException“ ab.
AGP-Property „android.lint.printStackTrace“ auf stabil umstellen
Funktionsanfrage: com.android.build.api.extension.impl.CURRENT_AGP_VERSION in eine öffentliche API umwandeln
SDK Manager sollte keine Log-Informationen mehr an stdout senden
DexArchiveBuilderTaskDelegate ist mit einem reinen Ressourcenbibliotheksmodul fehlgeschlagen
AGP7.4-Variante des benutzerdefinierten Plugins „toTransform“ für alle löst die Ausnahme „duplicate entry: META-INF/MANIFEST.MF“ aus
Unterstützung neuer Manifest-Tags
Der Link für „Entkoppelte Projekte“ in den Studio-Einstellungen führt zum falschen Ort.
Bitte geben Sie Optionen an, um generierte Quellen in Javadoc und SourceJar einzuschließen.
Schnelle Lösung für Abweichung zwischen „compileSdk“ und Abhängigkeit mit „minCompileSdkVersion“ erforderlich
[Gradle] tools:overrideLibrary sollte Sternchen (*) unterstützen
Einfrieren der Benutzeroberfläche beim Bearbeiten des Manifests
JaCoCo-Version in AGP 8.2.0 kann nicht festgelegt werden
Installationsaufgabe für Android-Gradle-Plug-in 8.2.0 schlägt in Projekten mit dynamischen Modulen fehl
Installationsaufgabe für Android-Gradle-Plug-in 8.2.0 schlägt in Projekten mit dynamischen Modulen fehl
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?
Lint
[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 mit der Meldung „property 'variantInputs.name' doesn't have a configured value.“ fehl.
TranslucentViewDetector meldet falsche Zeile im Manifest
„lintDebug“ meldet fälschlicherweise „UseTomlInstead“-Warnungen, wenn Projektabhängigkeiten verwendet werden
Unerwartete Probleme aus einem anderen Projekt, die von Android Lint gemeldet werden
LINT-Prüfung: Falsch positive Erkennung nicht verwendeter Ressourcen in Bindung und Klick-Listener
Benutzerdefinierte Lint-Prüfungs-JAR-Datei konnte nicht geladen werden: Knoten kann nicht in TreeNode umgewandelt werden
„visitAnnotationUsage“ wird für die Verwendung annotierter Klassen in Variablendeklarationen nicht 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 InvalidId-Detektors in AGP 8.0.2
LintError-Probleme, die Lint-Baselines hinzugefügt wurden
Quickfix Lint funktioniert nicht und führt zu einem IDE-Fehler
Inkonsistenter Testfehler aufgrund von Teilanalyse
Ungültige Hervorhebung einer Warnung, die ein Fehlalarm ist
„visitAnnotationUsage“ wird für die Verwendung annotierter Klassen in Variablendeklarationen nicht aufgerufen
Der Unused Resources Processor löscht möglicherweise die Gradle-Build-Datei.
Der NewApi-Lint-Check versteht das endgültige Feld „isAtleastU() && otherCondition()“ nicht.
StackOverflow von `LintClient.getSdkHome`
Android Studio / Lint informiert Sie nicht, wenn „platform“-Abhängigkeiten veraltet sind
Fehler: Kein Vorschlag zum Aktualisieren der Firebase-BOM-Abhängigkeit
In der Projektstruktur (und in Gradle ?) werden keine Firebase-Materiallist-Abhängigkeiten erkannt, die auf eine neuere Version aktualisiert werden müssen.
Lint-Integration
„DuplicatePlatformClasses“-Lint-Fehler aufgrund von „testImplementation“-Abhängigkeit
Shrinker (R8)
R8 funktioniert nach dem Upgrade von AGP 8.0.2 auf 8.1.0 nicht
„isShrinkResources“ optimiert in 8.3.0-alpha11 bis alpha14 zu stark
R8-Absturz des Flurry SDK mit AGP 8.2.0
Android – R8 verursacht Absturz von Unterklasse von LinearLayoutManager
R8 v8.2.33, Laufzeitabsturz „java.lang.VerifyError: Bad type on operand stack“ nach Upgrade
[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“ schlägt auf dem Bot „kotlin_dev“ fehl

Android-Gradle-Plug-in 8.3.1

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

Android-Gradle-Plug-in 8.3.2

Behobene Probleme
Android-Gradle-Plug-in
Bei AGP 8.3 mit aktiviertem Desugaring kann es zu einem Deadlock kommen
AGP 8.3 unterbricht die zipApksFor-Aufgabe
Lint-Integration
Lint kann eine KMP-Abhängigkeit nicht eindeutig zuordnen