Das Android Gradle-Plug-in 8.0.0 ist eine Hauptversion mit einer Vielzahl neuer Funktionen und Verbesserungen.
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 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. |
Patch-Releases
Im Folgenden finden Sie eine Liste der Patch-Releases für das Android Gradle-Plug-in 8.0.
Android Gradle Plugin 8.0.2 (Mai 2023)
Eine Liste der in AGP 8.0.2 behobenen Fehler finden Sie unter Behobene Probleme in Android Studio 2022.2.1.
Android Gradle Plugin 8.0.1 (Mai 2023)
Dieses Minor-Update enthält die folgenden 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] Hard Class Verification Failure on Android 11
|
Wichtige Änderung: Namespace im Build-Script auf Modulebene erforderlich
Sie müssen den Namespace in der build.gradle.kts
-Datei auf Modulebene und nicht in der Manifestdatei festlegen. Die namespace
-DSL-Property kann ab AGP 7.3 verwendet werden. Weitere Informationen finden Sie unter Namespace festlegen.
Beachten Sie bei der Migration zur Namespace-DSL die folgenden Probleme:
- In früheren Versionen von AGP wurde der Test-Namespace in einigen Fällen fälschlicherweise aus dem Haupt-Namespace oder der Anwendungs-ID abgeleitet. Der AGP Upgrade Assistant blockiert das Upgrade, wenn er feststellt, dass der Haupt- 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, wird Ihr Code möglicherweise kompiliert, aber Ihre instrumentierten Tests schlagen bei der Laufzeit fehl. Das kann passieren, wenn der instrumentierte Test-Quellcode auf eine Ressource verweist, die sowohl in Ihren
androidTest
- als auch in Ihren App-Quellen definiert ist.
Weitere Informationen finden Sie unter Problem 191813691, Kommentar 19.
Wichtige Änderungen: Standardwerte für Build-Optionen
Ab AGP 8.0 wurden die Standardwerte für diese Flags geändert, um die Build-Leistung zu verbessern. Mit dem AGP-Upgrade-Assistenten (Tools > AGP-Upgrade-Assistent) können Sie Ihren Code an einige dieser Änderungen anpassen. Der Upgrade Assistant führt Sie durch die Aktualisierung Ihres Codes, um das neue Verhalten zu berücksichtigen, oder durch die Einstellung von Flags, um das vorherige Verhalten beizubehalten.
Melden | Neuer Standardwert | Vorheriger Standardwert | Hinweise |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 generiert standardmäßig keine BuildConfig . Sie müssen diese Option in den Projekten, in denen Sie sie benötigen, mit der DSL angeben. |
android.defaults.buildfeatures.aidl |
false |
true |
In AGP 8.0 ist die AIDL-Unterstützung standardmäßig deaktiviert. Sie müssen diese Option in den Projekten, in denen Sie sie benötigen, mit der 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 standardmäßig nicht aktiviert. Sie müssen diese Option in den Projekten, in denen Sie sie benötigen, mit der 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 im aktuellen Modul definierte Ressourcen. |
android.enableR8.fullMode |
true |
false |
Bei AGP 8.0 ist der R8-Vollmodus standardmäßig aktiviert. Weitere Informationen finden Sie unter R8-Vollmodus. |
Nicht abwärtskompatible Ä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 druckt Warnungen aus.
Melden | Erzwungener Wert | Hinweise |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 gibt eine Warnung aus, wenn während der Konfigurationsphase eine Konfigurationsauflösung erkannt wird, da sich dies negativ auf die Gradle-Konfigurationszeiten auswirkt. |
android.r8.failOnMissingClasses |
true |
In AGP 8.0 werden Builds, die R8 verwenden, fehlgeschlagen, wenn für eine bessere DEX-Optimierung Klassen fehlen. Um dieses Problem zu beheben, müssen Sie die fehlenden Bibliotheken oder -dontwarn -Beibehaltungsregeln hinzufügen. 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 Unit-Tests aktiviert ist, generiert AGP 8.0 eine test_config.properties -Datei, die nur relative Pfade enthält. So kann der Gradle-Build-Cache immer für Android-Einheitstests verwendet werden. |
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 finden Sie unter Abhängigkeitsinformationen für die Play Console. |
android.enableArtProfiles |
true |
Baseline-Profile werden jetzt immer generiert. Weitere Informationen finden Sie unter Baseline-Profile. |
android.enableNewResourceShrinker |
true |
Die neue Implementierung des Ressourcen-Shrinkers standardmäßig verwenden Der neue Ressourcen-Minimierungstool unterstützt dynamische Funktionen. |
android.enableSourceSetPathsMap |
true |
Wird zum Berechnen 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 |
In AGP 8.0 wird standardmäßig keine SoftwareComponent erstellt. Stattdessen erstellt AGP SoftwareComponents nur für Varianten, die für die Veröffentlichung mit der Veröffentlichungs-DSL konfiguriert sind. |
Neues Flag „Stable“ für das Ausführungsprofil
AGP enthält das neue Flag android.settings.executionProfile
. Mit diesem Flag können Sie das Standardausführungsprofil von SettingsExtension
überschreiben.
Weitere Informationen finden Sie in der Dokumentation zum Plug-in für Einstellungen.
Eine Vorschau der experimentellen Flags finden Sie in den Versionshinweisen zur Vorabversion.
Lazy-Property-Zuweisung in Kotlin wird nicht unterstützt
Wenn Sie die Kotlin-DSL von Gradle für Ihre Build-Scripts verwenden, beachten Sie, dass Android Studio und AGP 8.0 die experimentelle Attributzuweisung mit dem Operator =
nicht unterstützen. Weitere Informationen zu dieser Funktion finden Sie in den Versionshinweisen und in der Dokumentation.
Build Analyzer-Aufgabenkategorien
Ab Android Studio Flamingo gibt es im Build Analyzer eine neue Standardansicht für Aufgaben, die sich auf die Builddauer auswirken. Wenn in Ihrem Projekt AGP 8.0 oder höher verwendet wird, werden Aufgaben im Build Analyzer nicht einzeln angezeigt, sondern nach Kategorie gruppiert. Beispielsweise werden Aufgaben, die speziell für Android-Ressourcen, Kotlin oder Dexing gelten, gruppiert und dann nach Builddauer sortiert. So lässt sich leicht erkennen, welche Kategorie den größten Einfluss auf die Buildzeit hat. Wenn Sie eine Kategorie maximieren, wird eine Liste der entsprechenden Aufgaben angezeigt. Wenn Sie Aufgaben einzeln und ohne Gruppierung anzeigen lassen möchten, verwenden Sie das Drop-down-Menü 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 Einstellungs-Plug-in können Sie globale 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 Einstellungs-Plug-in Ausführungsprofile für Tools oder unterschiedliche Anweisungen zum Ausführen eines Tools erstellen und zwischen ihnen wechseln.
Wenn Sie das Plug-in für Einstellungen verwenden möchten, wenden Sie es in der Datei settings.gradle
an:
apply plugin 'com.android.settings'
Globale Konfigurationen zentralisieren
Verwenden Sie den neuen Block android
in der Datei settings.gradle
, um globale Konfigurationen zu konfigurieren. Beispiel:
android {
compileSdk 31
minSdk 28
...
}
Tool-Ausführungsprofile
Mit dem Plug-in „Einstellungen“ können Sie auch Ausführungsprofile für einige Tools erstellen. Ein Ausführungsprofil bestimmt, wie ein Tool ausgeführt wird. Je nach Umgebung können Sie unterschiedliche 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 mit der Property android.experimental.settings.executionProfile
in der Datei gradle.properties
ein anderes Profil aus:
android.experimental.settings.executionProfile=high
Sie können diese Eigenschaft auch über die Befehlszeile festlegen, um unterschiedliche Workflows einzurichten. Wenn Sie beispielsweise einen Continuous-Integration-Workflow haben, können Sie das Ausführungsprofil über die Befehlszeile ändern, ohne die settings.gradle
-Datei ändern zu müssen:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
JDK 17 für die Ausführung von AGP 8.0 erforderlich
Wenn Sie das Android Gradle Plug-in 8.0 zum Erstellen Ihrer App verwenden, ist jetzt JDK 17 erforderlich, um Gradle auszuführen. Android Studio Flamingo enthält JDK 17 und konfiguriert Gradle so, dass es standardmäßig verwendet wird. Die meisten Android Studio-Nutzer müssen also keine Konfigurationsänderungen an ihren Projekten vornehmen.
Wenn Sie die JDK-Version festlegen, die 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, aktualisieren Sie die JDK-Version, indem Sie die JAVA_HOME
-Umgebungsvariable oder die -Dorg.gradle.java.home
-Befehlszeilenoption auf das Installationsverzeichnis von JDK 17 festlegen.
Behobene Probleme
Android Gradle-Plug-in 8.0.0
Behobene Probleme | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Android Gradle Plugin |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fussel |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint-Integration |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Schrumpfgerät (R8) |
|
Android Gradle-Plug-in 8.0.1
Behobene Probleme | ||||
---|---|---|---|---|
Schrumpfgerät (R8) |
|
Android Gradle-Plug-in 8.0.2
Behobene Probleme | |||||
---|---|---|---|---|---|
Schrumpfgerät (R8) |
|