Android Gradle-Plug-in 8.0.0 (April 2023)

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

Kompatibilität

Mindestversion Standardversio Hinweise
Logo: 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 Patchreleases 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 geschlossene Probleme mit Android Studio 2022.2.1.

Android-Gradle-Plug-in 8.0.1 (Mai 2023)

Dieses kleinere Update umfasste folgende Fehlerkorrekturen:

Behobene Probleme
Fehler: "Keine Versionsanforderung mit der angegebenen ID in der Tabelle" nach dem Upgrade von AGP 7.2.2 auf 7.4.0
R8 NullPointerException bei markTypeAsLive AGP 7.4.1
[R8 4.0.53] Fehler bei der Überprüfung der harten Klasse unter Android 11

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

Den Namespace müssen Sie 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 zu Namespace-DSL die folgenden Probleme:

  • In früheren Versionen von AGP wird der Test-Namespace in einigen Fällen falsch vom Haupt-Namespace oder von der Anwendungs-ID abgeleitet. Der AGP Upgrade Assistant blockiert das Upgrade, wenn der Haupt-Namespace und der Test-Namespace Ihres Projekts identisch sind. Wenn das Upgrade blockiert ist, müssen Sie testNamespace manuell ändern und den Quellcode entsprechend anpassen.
  • Nachdem Sie den Test-Namespace geändert haben, ist es möglich, dass Ihr Code zwar kompiliert wird, die instrumentierten Tests jedoch zur Laufzeit fehlschlagen. Dies kann passieren, wenn der instrumentierte Testquellcode auf eine Ressource verweist, die sowohl in der androidTest- als auch in der App-Quelle definiert ist.

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

Funktionsgefährdende Änderungen: Standardwerte der Build-Option

Ab AGP 8.0 wurden die Standardwerte für diese Flags geändert, um die Build-Leistung zu verbessern. Wenn Sie Hilfe beim Anpassen des Codes für einige dieser Änderungen benötigen, verwenden Sie den AGP Upgrade Assistant (Tools > AGP Upgrade Assistant). Der Upgrade-Assistent führt Sie durch die Aktualisierung Ihres Codes, um das neue Verhalten zu berücksichtigen oder Flags festzulegen, 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, über 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, über DSL angeben. Dieses Flag wird voraussichtlich in AGP 9.0 entfernt.
android.defaults.buildfeatures.renderscript false true In AGP 8.0 ist die RenderScript-Unterstützung nicht standardmäßig aktiviert. Sie müssen diese Option in den Projekten, in denen Sie sie benötigen, über 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.

Funktionsgefährdende Änderungen: Erzwungene Werte für Build-Optionen

Ab AGP 8.0 können Sie die Werte für diese Flags nicht mehr ändern. 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 die Konfigurationsauflö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 hinzufügen oder die Regeln -dontwarn beibehalten. Weitere Informationen finden Sie unter Warnungen zu fehlenden Klassen im R8-Schrumpfer.
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 Build-Cache von Gradle 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 SDK-Abhängigkeitsinformationen in AABs und APKs aktiviert ist, fügt AGP 8.0 diesen Informationen auch eine Liste von Projekt-Repositories hinzu. Weitere Informationen findest du unter Abhängigkeitsinformationen für die Play Console.
android.enableArtProfiles true Referenzprofile 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 Ressourcenverkürzer unterstützt dynamische Features.
android.enableSourceSetPathsMap true Wird für die Berechnung relativer Ressourcenpfadzuordnungen verwendet, sodass 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 über die Veröffentlichungs-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 SettingsExtension zu überschreiben. Weitere Informationen finden Sie in der Dokumentation zum Einstellungs-Plug-in.

Eine Vorschau der experimentellen Flags finden Sie in den Vorschau-Versionshinweisen.

Verzögerte Kotlin-Attributzuweisung wird nicht unterstützt

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

Build Analyzer-Aufgabenkategorien

Ab Android Studio Flamingo hat 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 der Build Analyzer die Aufgaben nach Kategorie, anstatt Aufgaben einzeln anzuzeigen. Beispielsweise werden Aufgaben speziell für Android Resources, Kotlin oder Dexing 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 eine Kategorie maximieren, wird eine Liste der entsprechenden Aufgaben angezeigt. Um Aufgaben einzeln und ohne Gruppierung anzuzeigen, verwenden Sie das Drop-down-Menü Gruppieren nach.

Build Analyzer-Aufgabenkategorien.

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, also Konfigurationen, die für alle Module gelten, an einem Ort zentralisieren, sodass Sie die Konfigurationen nicht kopieren und in mehrere Module einfügen müssen. Darüber hinaus können Sie mit dem Plug-in für Einstellungen Ausführungsprofile von Tools oder verschiedene Anleitungen zum Ausführen eines Tools und zum Wechseln zwischen diesen Profilen erstellen.

Wenn Sie das Plug-in für Einstellungen verwenden möchten, wenden Sie das Plug-in in der Datei settings.gradle an:

apply plugin 'com.android.settings'

Globale Konfigurationen zentralisieren

Verwenden Sie zum Konfigurieren globaler Konfigurationen den neuen android-Block in der Datei settings.gradle. Beispiel:

android {
  compileSdk 31
  minSdk 28
  ...
}

Profile für die Toolausführung

Mit dem Plug-in für Einstellungen können Sie auch Ausführungsprofile für einige Tools erstellen. Ein Ausführungsprofil bestimmt, wie ein Tool ausgeführt wird. Sie können je nach Umgebung unterschiedliche Ausführungsprofile auswählen. In einem Ausführungsprofil können Sie JVM-Argumente für ein Tool festlegen und 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"
  }
}

Um das Standardprofil zu überschreiben, 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 so 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 zum Ausführen von Gradle jetzt das JDK 17 erforderlich. Android Studio Flamingo bündelt JDK 17 und konfiguriert Gradle so, dass es standardmäßig verwendet wird. Das bedeutet, dass die meisten Android Studio-Nutzer keine Konfigurationsänderungen an ihren Projekten vornehmen müssen.

Wenn Sie die von AGP in Android Studio verwendete JDK-Version manuell festlegen möchten, 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 durch. Legen Sie dazu die Umgebungsvariable JAVA_HOME oder die Befehlszeilenoption -Dorg.gradle.java.home in Ihrem Installationsverzeichnis von JDK 17 fest.