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 wprowadziliśmy 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. 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
Rozszerzyliśmy język konfiguracji, aby można było dopasowywać wzorce nazw elementów negowanych.
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 elementu negowanego 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) |
|
|||||||||||||||