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 36.1. 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 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 koduWyświetlanie ujednoliconych raportów z testów.

Zmiany w R8

W AGP 9.2.0 uwzględniono te zmiany w R8.

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

Adnotacji niewidocznych w czasie działania nie można odczytać w czasie działania. 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 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 D8, wzorce -keepattributes z symbolami wieloznacznymi nie pasują już do RuntimeInvisibleAnnotations,RuntimeInvisibleParameterAnnotationsRuntimeInvisibleTypeAnnotations. 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ć negatywne wzorce nazw elementów.

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 wynikowej.

Rozwiązane problemy

Wtyczka Androida do obsługi Gradle w wersji 9.2.0-alpha04

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
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

Wtyczka Androida do obsługi Gradle w wersji 9.2.0-alpha03

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Błąd JdkImageTransform w przypadku pakietu JDK 26
Automatyczne kodowanie minAgpVersion w metadanych AAR w AGP 10.0
Linter
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 jest w najlepszym razie niewiarygodny.
Integracja z linterem
Zadania Lint Gradle ignorują flagę --quiet

Wtyczka Androida do obsługi Gradle w wersji 9.2.0-alpha02

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
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
Integracja z linterem
Android Lint nie działa w przypadku niestandardowych reguł lintowania skompilowanych do kodu bajtowego Java 21

Wtyczka Androida do obsługi Gradle w wersji 9.2.0-alpha01

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ą.
Linter
Lintowanie literówki w wiadomości