Wtyczka Androida do obsługi Gradle w wersji 9.2.0 (kwiecień 2026 r.)

Wtyczka Androida do obsługi Gradle w wersji 9.2 to wersja dodatkowa, która zawiera wiele nowych funkcji i ulepszeń.

Zgodność

Maksymalny poziom interfejsu API obsługiwany przez wtyczkę Androida do obsługi Gradle w wersji 9.2 to poziom 37.0. Inne informacje o zgodności:

Wersja minimalna Wersja domyślna Uwagi
Gradle 9.4.1 9.4.1 Więcej informacji znajdziesz w artykule o aktualizowaniu Gradle.
Narzędzia do kompilacji pakietu SDK 36.0.0 36.0.0 Zainstaluj lub skonfiguruj narzędzia SDK do kompilacji.
NDK Nie dotyczy 28.2.13676358 Zainstaluj lub skonfiguruj inną wersję NDK.
JDK 17 17 Więcej informacji znajdziesz w artykule o ustawianiu wersji JDK.

Ujednolicone raporty pokrycia i testów

Wtyczka AGP 9.2.0-alpha07 wprowadza zadania generowania paneli HTML, które konsolidują wyniki testów i pokrycie z różnych typów testów (jednostkowych i instrumentacyjnych), modułów i wariantów kompilacji, zapewniając kompleksowy przegląd w jednym panelu. Więcej informacji znajdziesz w artykułach Generowanie ujednoliconych raportów pokrycia kodu i Wyświetlanie ujednoliconych raportów z testów.

Zmiany w R8

W AGP 9.2.0 wprowadzono te zmiany w R8.

Bardziej rygorystyczna semantyka -keepattributes w przypadku zachowywania adnotacji niewidocznych w czasie działania

Adnotacji niewidocznych w czasie działania nie można odczytać w czasie działania. Dlatego D8 bezwarunkowo usuwa adnotacje niewidoczne w czasie działania i nie ma możliwości zmiany tego zachowania.

Aby zapewnić zgodność z ProGuard, R8 obsługuje wyświetlanie adnotacji niewidocznych w czasie działania. Jednak podczas kompilowania do DEX adnotacje niewidoczne w czasie działania na ogół nie powinny być zachowywane. Powszechną praktyką jest jednak uwzględnianie wygodnej reguły -keepattributes *Annotation* (bezpośrednio lub pośrednio z reguł zachowywania konsumenta), aby R8 zachowywał adnotacje widoczne w czasie działania. Niestety powoduje to też zachowywanie adnotacji niewidocznych w czasie działania.

Aby rozwiązać ten problem i lepiej dopasować zachowanie do D8, wzorce -keepattributes z symbolami wieloznacznymi nie pasują już do RuntimeInvisibleAnnotations, RuntimeInvisibleParameterAnnotations i RuntimeInvisibleTypeAnnotations. W rezultacie adnotacje niewidoczne w czasie działania będą zachowywane tylko wtedy, gdy nazwa atrybutu zostanie wyraźnie wymieniona bez symboli wieloznacznych.

Żadna z tych reguł nie będzie już zachowywać adnotacji niewidocznych w czasie działania:

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

Aby zachować adnotacje niewidoczne w czasie działania, użyj tej reguły:

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

Obsługa nazw negowanych w regułach dotyczących elementów

Język konfiguracji został rozszerzony, dzięki czemu możesz teraz dopasowywać wzorce nazw negowanych elementów.

Aby na przykład dopasować wszystkie metody, które nie kończą się na „ForTesting”, użyj tej reguły:

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

Wzorce nazw elementów można też negować w warunku wstępnym reguł -if. Jeśli wzorzec nazwy negowanego elementu zawiera symbole wieloznaczne, nie można się do nich odwoływać w regule -if.

Rozwiązane problemy

Wtyczka Androida do obsługi Gradle w wersji 9.2.1

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
java.lang.ClassNotFoundException: Didn't find class "com.android.tools.r8.RecordTag" after upgrading gradle to 9.2.0

Wtyczka Androida do obsługi Gradle w wersji 9.2.0

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Warn users if they have commonTest but forget withHostTestBuilder
[fused lib - public] OkHttp includes sources
Cannot run androidDeviceTest with manifest placeholders in library (AGP 9.0.0 with com.android.kotlin.multiplatform.library plugin)
AGP should warn if user has src/androidDeviceTest/java with java disabled
AGP 9.0 No androidComponents.onVariant equivalent for applicationVariants.all.mergeAssetsProvider
`*.xml.flat` files contain absolute file paths
R8D8ThreadPoolBuildService not registered
JdkImageTransform failure with JDK 26
Automatically encode minAgpVersion in the AAR metadata in AGP 10.0
Renaming APK using new AGP DSL
Error when accessing (but not evaluating) bootClasspath IllegalStateException: targetCompatibility is not yet finalized
keepRules sourceset not working for libraries
Embed CC compatibility declaration in AGP
Update Kotlin Gradle plugin dependency to 2.3.10
Allow higher compileSdk for tests than main
Linter
Lint typo in message
Truncated context window in Lint SARIF reports due to stuck offset pointer in `SarifReporter.kt`
Lint Gradle client is missing a critical feature making it unreliable at best
Lint error when resource shrinking is disabled
AGP 9 Lint reports WrongConstant when using nested IntDef constants
Lint error when resource shrinking is disabled
Integracja z linterem
Android Lint fails with custom lint checks compiled to Java 21 bytecode
Lint Gradle tasks ignore --quiet flag
Kompresor (R8)
Targeting Java 11 seems to break d8