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.
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.