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 |
|
|
Wtyczka Androida do obsługi Gradle w wersji 9.2.0
| Rozwiązane problemy | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Wtyczka Androida do obsługi Gradle |
|
|||||||||||||||
| Linter |
|
|||||||||||||||
| Integracja z linterem |
|
|||||||||||||||
| Kompresor (R8) |
|
|||||||||||||||