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 pomocnicza, 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.
Wtyczka Gradle do obsługi języka Kotlin (KGP) 2.2.10 2.2.10 Więcej informacji znajdziesz w artykule Zależność środowiska wykonawczego od wtyczki Gradle do obsługi Kotlina.

Ujednolicone raporty o pokryciu i testach

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 o pokryciu kodu i Wyświetlanie ujednoliconych raportów z testów.

Zmiany w R8

Wtyczka Androida do obsługi Gradle 9.2.0 zawiera 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. D8 bezwarunkowo usuwa adnotacje niewidoczne w czasie działania programu i nie ma możliwości zmiany tego zachowania.

Aby zapewnić zgodność z ProGuard, R8 obsługuje generowanie niewidocznych w czasie działania adnotacji. Jednak podczas kompilacji do DEX adnotacje niewidoczne w czasie działania nie powinny być zwykle zachowywane. Jednak w przypadku R8 powszechną praktyką jest uwzględnianie wygodnej reguły -keepattributes *Annotation* (bezpośrednio lub pośrednio z reguł zachowywania konsumentów), aby zachować widoczne w czasie działania adnotacje. Niestety powoduje to również zachowanie niewidocznych adnotacji w czasie działania.

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

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

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

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

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

Obsługa nazw z negacją w regułach dotyczących członków

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

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

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

Wzorzec nazwy członka grupy można też zanegować w warunku wstępnym -ifreguł. Jeśli wzorzec nazwy wykluczonego elementu zawiera symbole wieloznaczne, nie można się do nich odwoływać w -if regule następnika.

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
Ostrzeganie użytkowników, jeśli mają commonTest, ale zapomną o withHostTestBuilder
[fused lib - public] OkHttp includes sources
Nie można uruchomić testu androidDeviceTest z symbolami zastępczymi w pliku manifestu w bibliotece (AGP 9.0.0 z wtyczką com.android.kotlin.multiplatform.library)
AGP powinien ostrzegać, jeśli użytkownik ma katalog src/androidDeviceTest/java z wyłączoną Javą.
AGP 9.0: brak odpowiednika androidComponents.onVariant dla applicationVariants.all.mergeAssetsProvider
Pliki „*.xml.flat” zawierają bezwzględne ścieżki do plików
Usługa R8D8ThreadPoolBuildService nie jest zarejestrowana
Błąd JdkImageTransform w przypadku pakietu JDK 26
Automatyczne kodowanie minAgpVersion w metadanych AAR w AGP 10.0
Zmiana nazwy pliku APK za pomocą nowego języka DSL AGP
Błąd podczas uzyskiwania dostępu do bootClasspath (ale nie jego oceny) IllegalStateException: targetCompatibility nie jest jeszcze ostatecznie określony
Zestaw źródeł keepRules nie działa w przypadku bibliotek
Umieszczanie deklaracji zgodności z CC w AGP
Zaktualizuj zależność wtyczki Gradle do obsługi języka Kotlin do wersji 2.3.10
Zezwalaj na wyższy poziom compileSdk w przypadku testów niż w przypadku głównej wersji aplikacji
Linter
Lintowanie literówki w wiadomości
Obcięte okno kontekstu w raportach Lint SARIF z powodu zablokowanego wskaźnika przesunięcia w pliku `SarifReporter.kt`
Klient Lint Gradle nie ma kluczowej funkcji, co sprawia, że w najlepszym razie jest zawodny.
Błąd Lint, gdy zmniejszanie zasobów jest wyłączone
Lint AGP 9 zgłasza błąd WrongConstant podczas używania zagnieżdżonych stałych IntDef
Błąd Lint, gdy zmniejszanie zasobów jest wyłączone
Integracja z linterem
Android Lint nie działa w przypadku niestandardowych reguł lintowania skompilowanych do kodu bajtowego Java 21
Zadania Lint Gradle ignorują flagę --quiet
Kompresor (R8)
Kierowanie na Javę 11 powoduje błąd w d8