Das Android-Gradle-Plug-in 9.2 ist ein kleinerer Release, der eine Vielzahl neuer Funktionen und Verbesserungen enthält.
Kompatibilität
Das maximale API-Level, das vom Android-Gradle-Plug-in 9.2 unterstützt wird, ist API-Level 37.0. Weitere Informationen zur Kompatibilität:
| Mindestversion | Standardversion | Hinweise | |
|---|---|---|---|
| Gradle | 9.4.1 | 9.4.1 | Weitere Informationen finden Sie unter Gradle aktualisieren. |
| SDK-Build-Tools | 36.0.0 | 36.0.0 | Installieren oder konfigurieren Sie die SDK-Build-Tools. |
| NDK | – | 28.2.13676358 | Installieren Sie oder konfigurieren Sie eine andere Version des NDK. |
| JDK | 17 | 17 | Weitere Informationen finden Sie unter JDK-Version festlegen. |
Einheitliche Berichte zur Abdeckung und zu Tests
Mit AGP 9.2.0-alpha07 werden Aufgaben eingeführt, mit denen HTML-Dashboards generiert werden, in denen Testergebnisse und die Abdeckung verschiedener Testtypen (Unit- und Instrumentierungstests), Module und Build-Varianten zusammengefasst werden. So erhalten Sie eine umfassende Übersicht in einem einzigen Dashboard. Weitere Informationen finden Sie unter Einheitliche Berichte zur Codeabdeckung generieren und Einheitliche Testberichte ansehen.
Änderungen an R8
Die folgenden Änderungen an R8 sind in AGP 9.2.0 enthalten.
Strengere -keepattributes-Semantik zum Beibehalten von zur Laufzeit unsichtbaren Annotationen
Zur Laufzeit unsichtbare Annotationen können zur Laufzeit nicht gelesen werden. D8 entfernt sie daher bedingungslos. Diese Einstellung kann nicht geändert werden.
Zur Kompatibilität mit ProGuard unterstützt R8 die Ausgabe von zur Laufzeit unsichtbaren Annotationen. Beim Kompilieren in DEX sollten zur Laufzeit unsichtbare Annotationen jedoch in der Regel nie beibehalten werden. Es ist jedoch üblich, die praktische Regel -keepattributes *Annotation* (entweder direkt oder indirekt aus Regeln zum Beibehalten von Consumer-Code) für R8 einzufügen, damit zur Laufzeit sichtbare Annotationen beibehalten werden.
Leider werden dadurch auch zur Laufzeit unsichtbare Annotationen beibehalten.
Um dieses Problem zu beheben und das Verhalten von D8 besser nachzubilden, stimmen -keepattributes-Muster mit Platzhaltern nicht mehr mit RuntimeInvisibleAnnotations, RuntimeInvisibleParameterAnnotations und RuntimeInvisibleTypeAnnotations überein.
Daher werden zur Laufzeit unsichtbare Annotationen nur beibehalten, wenn der Attributname ohne Platzhalter explizit angegeben wird.
Mit keiner der folgenden Regeln werden zur Laufzeit unsichtbare Annotationen beibehalten:
-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*
Verwenden Sie die folgende Regel, um zur Laufzeit unsichtbare Annotationen beizubehalten:
-keepattributes RuntimeInvisibleAnnotations,
RuntimeInvisibleParameterAnnotations,
RuntimeInvisibleTypeAnnotations
Unterstützung für negierte Namen in Member-Regeln
Die Konfigurationssprache wurde erweitert, sodass Sie jetzt auch nach negierten Mustern für Member-Namen suchen können.
Wenn Sie beispielsweise alle Methoden finden möchten, die nicht mit „ForTesting“ enden, verwenden Sie die folgende Regel:
-keepclassmembers class com.example.MyClass {
*** !*ForTesting(...);
}
Muster für Member-Namen können auch in der Vorbedingung von -if-Regeln negiert werden. Wenn ein negiertes Muster für Member-Namen Platzhalter enthält, kann in der nachfolgenden -if-Regel nicht auf diese Platzhalter verwiesen werden.
Behobene Probleme
Android-Gradle-Plug-in 9.2.1
| Behobene Probleme | ||
|---|---|---|
| Android-Gradle-Plug-in |
|
|
Android-Gradle-Plug-in 9.2.0
| Behobene Probleme | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Android-Gradle-Plug-in |
|
|||||||||||||||
| Lint |
|
|||||||||||||||
| Lint-Integration |
|
|||||||||||||||
| Shrinker (R8) |
|
|||||||||||||||