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.

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 finden Sie in der 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 auf AGP 7.2.2 -> 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

Sie müssen den Namespace in der Datei build.gradle.kts auf Modulebene festlegen, als die Manifestdatei. Du kannst jetzt die DSL-Property namespace verwenden ab 7.3 AGP. Weitere Informationen finden Sie unter Legen Sie einen Namespace fest.

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

  • Frühere Versionen von AGP leiten den Test-Namespace aus dem Haupt-Namespace ab. Anwendungs-ID, die in einigen Fällen falsch ist. Der AGP Upgrade Assistant blockiert Upgrade ausführen, wenn festgestellt wird, dass der Haupt-Namespace und der Test-Namespace Ihres Projekts ist das Gleiche. Wenn das Upgrade blockiert ist, müssen Sie testNamespace manuell ändern und ändern Sie Ihren Quellcode entsprechend.
  • Nachdem Sie den Test-Namespace geändert haben, ist es möglich, dass Ihr Code kompiliert aber Ihre instrumentierten Tests schlagen zur Laufzeit fehl. Das kann passieren, verweist der instrumentierte Testquellcode auf eine Ressource, die in Ihren androidTest und App-Quellen.

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 in die Build-Leistung zu verbessern. Um Hilfe bei der Anpassung Ihres Codes für einige AGP-Upgradeassistenten verwenden, (Tools > AGP Upgrade Assistant) (Tools > AGP-Upgrade-Assistent). Der Upgrade-Assistent führt Sie durch Sie müssen Ihren Code aktualisieren, um das neue Verhalten zu berücksichtigen, oder Flags festlegen, die beibehalten werden sollen dem vorherigen Verhalten.

Melden Neuer Standardwert Vorheriger Standardwert Hinweise
android.defaults.buildfeatures.buildconfig false true AGP 8.0 generiert BuildConfig nicht standardmäßig. Du brauchst , um diese Option in den Projekten, in denen sie benötigt wird, über DSL anzugeben.
android.defaults.buildfeatures.aidl false true AGP 8.0 aktiviert die AIDL-Unterstützung nicht standardmäßig. Sie müssen angeben, in den Projekten, in denen Sie sie benötigen, über DSL. Diese Markierung ist 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. Erforderliche Schritte Geben Sie diese Option in den Projekten, in denen Sie sie benötigen, über DSL an. Dieses wird voraussichtlich in AGP 9.0 entfernt.
android.nonFinalResIds true false AGP 8.0 generiert R-Klassen mit nicht endgültigen Feldern durch Standardeinstellung.
android.nonTransitiveRClass true false AGP 8.0 generiert R-Klassen für Ressourcen, die in nur auf das aktuelle Modul.
android.enableR8.fullMode true false AGP 8.0 aktiviert standardmäßig den R8-Full-Modus. Weitere Informationen finden Sie unter R8 – Vollbildmodus.

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 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 da die Konfiguration sich negativ auf die Gradle-Konfiguration auswirkt. Mal.
android.r8.failOnMissingClasses true AGP 8.0 schlägt Builds fehl, die R8 verwenden, wenn Klassen fehlen, um eine bessere DEX-Optimierung. Um dieses Problem zu beheben, müssen Sie den fehlende Bibliotheken oder -dontwarn Aufbewahrungsregeln. Weitere Informationen Siehe Fehlende Klassenwarnungen im R8-Schrumpfer.
android.testConfig.useRelativePath true Bei Unterstützung für die Verwendung von Android-Ressourcen, -Assets und -Manifesten in aktiviert sind, generiert AGP 8.0 eine test_config.properties-Datei, die nur relative Pfade. Dadurch wird sichergestellt, dass Android-Einheitentests immer den Gradle-Plug-in verwenden können. Build-Cache.
android.useNewJarCreator true AGP nutzt die Zipflinger-Bibliothek beim Erstellen von JAR-Dateien, um die die Leistung Ihrer Website zu verbessern.
android.bundletool.includeRepositoriesInDependencyReport true Wenn das Hinzufügen von Informationen zu SDK-Abhängigkeiten in AABs und APKs aktiviert ist, In AGP 8.0 wird diesen Informationen auch eine Liste von Projekt-Repositories hinzugefügt. Bis Weitere Informationen finden Sie unter Informationen zu Abhängigkeiten 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. Das neue und unterstützt dynamische Features.
android.enableSourceSetPathsMap true Wird für die Berechnung relativer Ressourcenpfadzuordnungen verwendet, damit Gradle erstellt häufiger aktuell sind.
android.cacheCompileLibResources true Kompilierte Bibliotheksressourcen können jetzt standardmäßig im Cache gespeichert werden, da Gradle Ressourcendateien relativ zum Projektspeicherort. Erforderlich android.enableSourceSetPathsMap wird aktiviert.
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 konfiguriert sind mit dem Veröffentlichungs-DSL.

Neues stabiles Flag für das Ausführungsprofil

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

Eine Vorschau der experimentellen Flags finden Sie in der Versionshinweise für die Vorabversion

Verzögerte Kotlin-Attributzuweisung wird nicht unterstützt

Wenn Sie für Ihre Build-Skripts Kotlin DSL von Gradle verwenden, Studio und AGP 8.0 unterstützen die Zuweisung von experimentellen Eigenschaften mithilfe der Methode Operator =. Weitere Informationen zu dieser Funktion finden Sie in der Versionshinweise und Dokumentation.

Build Analyzer-Aufgabenkategorien

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, anstatt Aufgaben einzeln anzuzeigen, gruppiert der Build Analyzer Kategorie. z. B. Aufgaben speziell für Android Resources, Kotlin oder Dexing gruppiert und dann nach Build-Dauer sortiert. So können Sie ganz einfach welche Kategorie den größten Einfluss auf die Build-Dauer hat. Jede Kategorie wird erweitert zeigt eine Liste der entsprechenden Aufgaben an. Um sich die Aufgaben einzeln anzeigen zu lassen, ohne Gruppierung verwenden, 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 zentralisieren Sie globale Konfigurationen – Konfigurationen, die für alle Module gelten – in an einem Ort. So müssen Sie die Konfigurationen nicht in mehreren Module. Außerdem können Sie mit dem Plug-in für die Einstellungen Ausführungsprofile oder unterschiedliche Anleitungen zum Ausführen eines Tools und zwischen ihnen wechseln.

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 settings.gradle-Datei. 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. Eine das Ausführungsprofil bestimmt, wie ein Tool ausgeführt wird, können Sie verschiedene von der Umgebung abhängig. In einem Ausführungsprofil kann JVM-Argumente für ein Tool festlegen und so konfigurieren, dass es in einem separaten Prozess ausgeführt wird. Derzeit sind nur die R8-Tool wird unterstützt.

Erstellen Sie Ausführungsprofile und legen Sie das Standardausführungsprofil fest in der settings.gradle, 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"
  }
}

Wählen Sie zum Überschreiben des Standardprofils mithilfe der android.experimental.settings.executionProfile-Property im gradle.properties-Datei:

android.experimental.settings.executionProfile=high

Sie können diese Eigenschaft auch über die Befehlszeile festlegen. Damit können Sie unterschiedliche Workflows. Beispiel: Sie haben einen Continuous-Integration-Workflow, können Sie das Ausführungsprofil über die Befehlszeile Ändern Sie die Datei settings.gradle:

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

JDK 17 zur Ausführung von AGP 8.0 erforderlich

Wenn du deine App mit dem Android-Gradle-Plug-in 8.0 erstellst, ist jetzt JDK 17 erforderlich um Gradle auszuführen. Android Studio Flamingo bündelt JDK 17 und konfiguriert Gradle so, standardmäßig verwendet. Das bedeutet, dass die meisten Android Studio-Nutzer Konfigurationsänderungen an ihren Projekten.

Wenn Sie die JDK-Version manuell festlegen müssen von AGP in Android Studio verwendet wird, 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, indem Sie JAVA_HOME festlegen Umgebungsvariable oder die -Dorg.gradle.java.home Befehlszeilenoption in Ihr Installationsverzeichnis von JDK 17.