Android Gradle-Plug-in 8.0.0 (April 2023)

Das Android Gradle-Plug-in 8.0.0 ist eine Hauptversion, die eine Vielzahl neuer Funktionen und Verbesserungen enthält.

Kompatibilität

Mindestversion Standardversio Hinweise
Gradle 8.0 8.0 Weitere Informationen finden Sie unter Gradle aktualisieren.
SDK-Build-Tools 30.0.3 30.0.3 Installieren oder konfigurieren Sie SDK-Build-Tools.
Logo: NDK 25.1.8937393 Installieren oder konfigurieren Sie eine andere Version des NDK.
JDK 17 17 Weitere Informationen finden Sie unter JDK-Version festlegen.

Patch releases

Im Folgenden finden Sie eine Liste der Patchversionen für das Android-Gradle-Plug-in 8.0.

Android Gradle-Plug-in 8.0.2 (Mai 2023)

Eine Liste der in AGP 8.0.2 behobenen Fehler findest du unter Android Studio 2022.2.1 geschlossene Probleme.

Android Gradle-Plug-in 8.0.1 (Mai 2023)

Dieses kleinere Update umfasst die folgenden Fehlerkorrekturen:

Behobene Probleme
Fehler: "No VersionRequirement with the specific id in the table" (Keine Versionsanforderung mit der angegebenen ID in der Tabelle) nach Upgrade von AGP 7.2.2 auf 7.4.0
R8 NullPointerException bei markTypeAsLive AGP 7.4.1
[R8 4.0.53] Die harte Klassenüberprüfung unter Android 11 ist fehlgeschlagen.

Nicht abwärtskompatible Änderung: Namespace im Build-Script auf Modulebene erforderlich

Sie müssen den Namespace in der Datei build.gradle.kts auf Modulebene und nicht in der Manifestdatei festlegen. Sie können die DSL-Eigenschaft namespace ab AGP 7.3 verwenden. Weitere Informationen finden Sie unter Namespace festlegen.

Beachten Sie bei der Migration zur Namespace-DSL die folgenden Probleme:

  • In früheren Versionen von AGP wird der Test-Namespace in einigen Fällen fälschlicherweise vom Haupt-Namespace oder der Anwendungs-ID abgeleitet. Der AGP-Upgrade-Assistent blockiert das Upgrade, wenn er feststellt, dass der Haupt-Namespace und der Test-Namespace Ihres Projekts identisch sind. Wenn das Upgrade blockiert wird, müssen Sie testNamespace manuell ändern und den Quellcode entsprechend anpassen.
  • Nachdem Sie den Test-Namespace geändert haben, kann es sein, dass Ihr Code kompiliert wird, aber Ihre instrumentierten Tests zur Laufzeit fehlschlagen. Dies kann passieren, wenn der Quellcode des instrumentierten Tests auf eine Ressource verweist, die sowohl in der androidTest- als auch in der Anwendungsquelle definiert ist.

Weitere Informationen finden Sie unter Problem Nr. 191813691 Kommentar Nr. 19.

Wichtige Änderungen: Standardwerte für Build-Optionen

Ab AGP 8.0 haben sich die Standardwerte für diese Flags geändert, um die Build-Leistung zu verbessern. Wenn Sie Hilfe beim Anpassen Ihres Codes zur Unterstützung einiger dieser Änderungen benötigen, verwenden Sie den AGP-Upgradeassistenten (Tools > AGP-Upgradeassistent). Der Upgrade-Assistent führt Sie durch die Aktualisierung des Codes, um das neue Verhalten zu berücksichtigen, oder legt Flags fest, um das vorherige Verhalten beizubehalten.

Melden Neuer Standardwert Vorheriger Standardwert Hinweise
android.defaults.buildfeatures.buildconfig false true AGP 8.0 generiert BuildConfig nicht standardmäßig. Sie müssen diese Option in den Projekten, in denen Sie sie benötigen, mithilfe von DSL angeben.
android.defaults.buildfeatures.aidl false true AGP 8.0 aktiviert die AIDL-Unterstützung nicht standardmäßig. Sie müssen diese Option in den Projekten, in denen Sie sie benötigen, mithilfe von DSL angeben. Dieses Flag wird voraussichtlich in AGP 9.0 entfernt.
android.defaults.buildfeatures.renderscript false true Bei AGP 8.0 wird die RenderScript-Unterstützung nicht standardmäßig aktiviert. Sie müssen diese Option in den Projekten, in denen Sie sie benötigen, mithilfe von DSL angeben. Dieses Flag wird voraussichtlich in AGP 9.0 entfernt.
android.nonFinalResIds true false AGP 8.0 generiert standardmäßig R-Klassen mit nicht endgültigen Feldern.
android.nonTransitiveRClass true false AGP 8.0 generiert R-Klassen nur für Ressourcen, die im aktuellen Modul definiert sind.
android.enableR8.fullMode true false AGP 8.0 aktiviert standardmäßig den R8-Full-Modus. Weitere Informationen finden Sie unter R8-Vollmodus.

Wichtige Änderungen: Erzwungene Werte für Build-Option

Ab AGP 8.0 können die Werte für diese Flags nicht mehr geändert werden. Wenn Sie sie in der Datei gradle.properties angeben, wird der Wert ignoriert und AGP gibt Warnungen aus.

Melden Erzwungener Wert Hinweise
android.dependencyResolutionAtConfigurationTime.warn true AGP 8.0 gibt eine Warnung aus, wenn während der Konfigurationsphase eine Konfigurationslösung erkannt wird, da sich dies negativ auf die Gradle-Konfigurationszeiten auswirkt.
android.r8.failOnMissingClasses true AGP 8.0 schlägt Builds fehl, die R8 verwenden, wenn Klassen fehlen, um eine bessere DEX-Optimierung zu gewährleisten. Um dieses Problem zu beheben, müssen Sie die fehlenden Bibliotheken oder -dontwarn Keep-Regeln hinzufügen. Weitere Informationen finden Sie unter Fehlende Klassenwarnungen in R8 Shrinker.
android.testConfig.useRelativePath true Wenn die Unterstützung für die Verwendung von Android-Ressourcen, Assets und Manifesten in Einheitentests aktiviert ist, generiert AGP 8.0 eine test_config.properties-Datei, die nur relative Pfade enthält. Dadurch wird sichergestellt, dass Android-Einheitentests immer den Gradle-Build-Cache verwenden können.
android.useNewJarCreator true AGP verwendet die Zipflinger-Bibliothek beim Erstellen von JAR-Dateien, um die Build-Leistung zu verbessern.
android.bundletool.includeRepositoriesInDependencyReport true Wenn das Hinzufügen von Informationen zu SDK-Abhängigkeiten in AABs und APKs aktiviert ist, wird diesen Informationen in AGP 8.0 auch eine Liste von Projekt-Repositories hinzugefügt. Weitere Informationen finden Sie unter Informationen zu Abhängigkeiten für die Play Console.
android.enableArtProfiles true Basisprofile werden jetzt immer generiert. Weitere Informationen finden Sie unter Baseline-Profile.
android.enableNewResourceShrinker true Verwenden Sie standardmäßig die neue Ressourcen-Shinker-Implementierung. Der neue Ressourcenschrumpf unterstützt dynamische Features.
android.enableSourceSetPathsMap true Wird zur Berechnung relativer Ressourcenpfadzuordnungen verwendet, damit Gradle-Builds häufiger auf dem neuesten Stand sind.
android.cacheCompileLibResources true Kompilierte Bibliotheksressourcen können jetzt standardmäßig im Cache gespeichert werden, da Gradle Ressourcendateien relativ zum Projektspeicherort verfolgt. Hierfür muss android.enableSourceSetPathsMap aktiviert sein.
android.disableAutomaticComponentCreation true AGP 8.0 erstellt standardmäßig keine SoftwareComponent. Stattdessen erstellt AGP SoftwareComponents nur für Varianten, die für die Veröffentlichung mit der veröffentlichenden DSL konfiguriert sind.

Neues stabiles Flag für das Ausführungsprofil

AGP enthält das neue Flag android.settings.executionProfile. Verwenden Sie dieses Flag, um das Standardausführungsprofil aus dem SettingsExtension zu überschreiben. Weitere Informationen finden Sie in der Dokumentation zum Plug-in für Einstellungen.

Eine Vorschau der experimentellen Flags finden Sie in den Versionshinweisen für die Vorabversion.

Verzögerte Kotlin-Attributzuweisung wird nicht unterstützt

Wenn Sie Kotlin-DSL von Gradle für Ihre Build-Skripts verwenden, beachten Sie, dass Android Studio und AGP 8.0 die experimentelle Zuweisung von Attributen mit dem Operator = nicht unterstützen. Weitere Informationen zu dieser Funktion finden Sie in den Versionshinweisen und in der Dokumentation.

Aufgabenkategorien des Build Analyzer

Ab Android Studio Flamingo bietet Build Analyzer eine neue Standardansicht für Aufgaben, die sich auf die Build-Dauer auswirken. Wenn Ihr Projekt AGP 8.0 oder höher verwendet, gruppiert Build Analyzer sie nach Kategorie, anstatt Aufgaben einzeln anzuzeigen. Beispielsweise werden Aufgaben, die für Android-Ressourcen, Kotlin oder Dexing spezifisch sind, gruppiert und dann nach Build-Dauer sortiert. So lässt sich leicht erkennen, welche Kategorie den größten Einfluss auf die Build-Dauer hat. Wenn Sie die einzelnen Kategorien erweitern, wird eine Liste der entsprechenden Aufgaben angezeigt. Über das Drop-down-Menü Gruppieren nach können Sie Aufgaben einzeln und ohne Gruppierung anzeigen lassen.

Aufgabenkategorien des Build Analyzer.

Neues Plug-in für Einstellungen

Mit AGP 8.0.0-alpha09 wird das neue Plug-in für Einstellungen eingeführt. Mit dem Plug-in für Einstellungen können Sie globale Konfigurationen – Konfigurationen, die für alle Module gelten – an einem Ort zentralisieren, sodass Sie die Konfigurationen nicht in mehrere Module kopieren und einfügen müssen. Außerdem können Sie mit dem Plug-in „Settings“ (Einstellungen) Ausführungsprofile für Tools erstellen oder andere Anleitungen zur Ausführung eines Tools erstellen und zwischen diesen wechseln.

Um das Plug-in für Einstellungen zu verwenden, wenden Sie es in der Datei settings.gradle an:

apply plugin 'com.android.settings'

Globale Konfigurationen zentralisieren

Verwenden Sie den neuen android-Block in der Datei settings.gradle, um globale Konfigurationen zu konfigurieren. Beispiel:

android {
  compileSdk 31
  minSdk 28
  ...
}

Tool-Ausführungsprofile

Mit dem Plug-in „Settings“ (Einstellungen) können Sie für einige Tools auch Ausführungsprofile erstellen. Das Ausführungsprofil bestimmt, wie ein Tool ausgeführt wird. Sie können je nach Umgebung verschiedene Ausführungsprofile auswählen. In einem Ausführungsprofil können Sie JVM-Argumente für ein Tool festlegen und es so konfigurieren, dass es in einem separaten Prozess ausgeführt wird. Derzeit wird nur das R8-Tool unterstützt.

Erstellen Sie Ausführungsprofile und legen Sie das Standardausführungsprofil in der Datei settings.gradle fest, wie im folgenden Beispiel gezeigt:

android {
  execution {
    profiles {
      high {
        r8 {
          jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      low {
        r8 {
          jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      ci {
        r8.runInSeparateProcess false
      }
    }
    defaultProfile "low"
  }
}

Wenn Sie das Standardprofil überschreiben möchten, wählen Sie mithilfe des Attributs android.experimental.settings.executionProfile in der Datei gradle.properties ein anderes Profil aus:

android.experimental.settings.executionProfile=high

Sie können dieses Attribut auch über die Befehlszeile festlegen und damit verschiedene Workflows einrichten. Bei einem Continuous-Integration-Workflow können Sie beispielsweise das Ausführungsprofil über die Befehlszeile ändern, ohne die Datei settings.gradle ändern zu müssen:

./gradlew assembleRelease \
  -Pandroid.experimental.settings.executionProfile=ci

JDK 17 zur Ausführung von AGP 8.0 erforderlich

Wenn Sie Ihre App mit dem Android Gradle-Plug-in 8.0 erstellen, ist jetzt JDK 17 zum Ausführen von Gradle erforderlich. In Android Studio Flamingo wird JDK 17 gebündelt und Gradle so konfiguriert, dass es standardmäßig verwendet wird. Das bedeutet, dass die meisten Android Studio-Nutzer keine Änderungen an der Konfiguration ihrer Projekte vornehmen müssen.

Wenn Sie die von AGP in Android Studio verwendete JDK-Version manuell festlegen müssen, müssen Sie JDK 17 oder höher verwenden.

Wenn Sie AGP unabhängig von Android Studio verwenden, führen Sie ein Upgrade der JDK-Version aus. Setzen Sie dazu die Umgebungsvariable JAVA_HOME oder die Befehlszeilenoption -Dorg.gradle.java.home auf Ihr Installationsverzeichnis von JDK 17.