Das Android-Gradle-Plug-in 8.0.0 ist eine Hauptversion mit vielen neuen 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-Plug-in 8.0.2 (Mai 2023)
Eine Liste der in AGP 8.0.2 behobenen Fehler finden Sie unter Geschlossene Probleme in Android Studio 2022.2.1.
Android-Gradle-Plug-in 8.0.1 (Mai 2023)
Dieses kleinere Update enthält die folgenden Fehlerkorrekturen:
Behobene Probleme | |
---|---|
Fehler: „No VersionRequirement with the given id in the table“ (Keine VersionRequirement 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 harten Klassenprüfung unter Android 11
|
Wichtige Änderung: Namespace im Build-Skript auf Modulebene erforderlich
Sie müssen den Namespace in der build.gradle.kts
-Datei auf Modulebene und nicht in der Manifestdatei festlegen. Sie können die DSL-Property 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 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-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, kann es sein, dass Ihr Code kompiliert wird, Ihre instrumentierten Tests aber zur Laufzeit fehlschlagen. Das kann passieren, wenn in Ihrem instrumentierten Testquellcode auf eine Ressource verwiesen wird, 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. Wenn Sie Hilfe beim Anpassen Ihres Codes benötigen, um einige dieser Änderungen zu unterstützen, verwenden Sie den AGP Upgrade Assistant (Tools > AGP Upgrade Assistant). Der Upgrade Assistant führt Sie durch die Aktualisierung Ihres Codes, um das neue Verhalten zu berücksichtigen, oder durch das Festlegen von Flags, um das vorherige Verhalten beizubehalten.
Melden | Neuer Standardwert | Vorheriger Standardwert | Hinweise |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
In AGP 8.0 wird BuildConfig nicht standardmäßig generiert. Sie müssen diese Option mit der DSL in den Projekten angeben, in denen Sie sie benötigen. |
android.defaults.buildfeatures.aidl |
false |
true |
In AGP 8.0 ist die AIDL-Unterstützung nicht standardmäßig aktiviert. Sie müssen diese Option mit der DSL in den Projekten angeben, in denen Sie sie benötigen. 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 mit der DSL in den Projekten angeben, in denen Sie sie benötigen. Dieses Flag wird voraussichtlich in AGP 9.0 entfernt. |
android.nonFinalResIds |
true |
false |
Mit AGP 8.0 werden standardmäßig R -Klassen mit nicht finalen Feldern generiert. |
android.nonTransitiveRClass |
true |
false |
Mit AGP 8.0 werden R -Klassen nur für Ressourcen generiert, die im aktuellen Modul definiert sind. |
android.enableR8.fullMode |
true |
false |
In AGP 8.0 ist der R8-Vollmodus standardmäßig aktiviert. Weitere Informationen finden Sie unter R8-Vollmodus. |
Nicht abwärtskompatible Änderungen: Erzwingen von Build-Optionswerten
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 eine Konfigurationsauflösung erkannt wird, da dies die Gradle-Konfigurationszeiten negativ beeinflusst. |
android.r8.failOnMissingClasses |
true |
In AGP 8.0 schlagen Builds, die R8 verwenden, fehl, 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 Warnungen zu fehlenden Klassen im R8-Shrinker. |
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 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 SDK-Abhängigkeitsinformationen in AABs und APKs aktiviert ist, fügt AGP 8.0 dieser Information auch eine Liste von Projekt-Repositories hinzu. Weitere Informationen |
android.enableArtProfiles |
true |
Baseline-Profile werden jetzt immer generiert. Weitere Informationen finden Sie unter Baseline-Profile. |
android.enableNewResourceShrinker |
true |
Standardmäßig die neue Implementierung des Resource Shrinker verwenden. Die neue Funktion zum Verkleinern von Ressourcen unterstützt dynamische Module. |
android.enableSourceSetPathsMap |
true |
Wird zum Berechnen relativer Ressourcenpfadzuordnungen verwendet, damit Gradle-Builds häufiger auf dem neuesten Stand sind. |
android.cacheCompileLibResources |
true |
Kompilierte Bibliotheksressourcen können jetzt standardmäßig zwischengespeichert werden, da Gradle Ressourcendateien relativ zum Projektstandort 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 Publishing-DSL konfiguriert sind. |
Neues stabiles Flag für das Ausführungsprofil
AGP enthält das neue Flag android.settings.executionProfile
. Mit diesem Flag können Sie das Standardausführungsprofil aus der SettingsExtension
überschreiben.
Weitere Informationen finden Sie in der Dokumentation zum Einstellungs-Plug-in.
Informationen zur Vorschau von experimentellen Flags finden Sie in den Versionshinweisen zur Vorschau.
Zuweisung von Lazy-Properties in Kotlin wird nicht unterstützt
Wenn Sie die Kotlin-DSL von Gradle für Ihre Build-Skripts verwenden, beachten Sie, dass Android Studio und das AGP 8.0 die experimentelle Zuweisung von Attributen mit dem Operator =
nicht unterstützen. Weitere Informationen zu diesem Feature finden Sie in den Versionshinweisen und der Dokumentation.
Build Analyzer-Aufgabenkategorien
Ab Android Studio Flamingo bietet Build Analyzer eine neue Standardansicht für Tasks, die sich auf die Build-Dauer auswirken. Wenn in Ihrem Projekt AGP 8.0 oder höher verwendet wird, werden Aufgaben im Build Analyzer nicht einzeln, sondern nach Kategorie gruppiert. Aufgaben, die sich beispielsweise auf Android-Ressourcen, Kotlin oder Dexing beziehen, werden gruppiert und dann nach Build-Dauer sortiert. So lässt sich leicht feststellen, welche Kategorie die Build-Zeit am stärksten beeinflusst. 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ü Gruppieren nach.
Neues Einstellungen-Plug-in
Mit AGP 8.0.0-alpha09 wird das neue Settings-Plug-in eingeführt. Mit dem Einstellungen-Plug-in können Sie globale Konfigurationen, die für alle Module gelten, an einem zentralen Ort zusammenfassen. So müssen Sie die Konfigurationen nicht in mehrere Module kopieren und einfügen. Außerdem können Sie mit dem Einstellungen-Plug-in Ausführungsprofile für Tools oder verschiedene Anleitungen zum Ausführen eines Tools erstellen und zwischen ihnen wechseln.
Wenn Sie das Einstellungen-Plug-in verwenden möchten, 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
...
}
Profile für die Tool-Ausführung
Mit dem Einstellungen-Plug-in 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 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 mit dem Attribut 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, um verschiedene Arbeitsabläufe einzurichten. Wenn Sie beispielsweise einen Continuous Integration-Workflow haben, können Sie das Ausführungsprofil über die Befehlszeile ändern, ohne die Datei settings.gradle
ändern zu müssen:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
Für AGP 8.0 ist JDK 17 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 daher keine Konfigurationsänderungen an ihren Projekten vornehmen.
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, 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-Plug-in |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint-Integration |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shrinker (R8) |
|
Android-Gradle-Plug-in 8.0.1
Behobene Probleme | ||||
---|---|---|---|---|
Shrinker (R8) |
|
Android-Gradle-Plug-in 8.0.2
Behobene Probleme | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|