Wtyczka Androida do obsługi Gradle 8.2.0 (listopad 2023 r.)

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

Zgodność

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

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

Nowe makro do określania ścieżki JDK

#GRADLE_LOCAL_JAVA_HOME to nowe makro, którego możesz użyć do określenia ścieżki JDK. Dzięki temu łatwiej i bezpieczniej określisz ścieżkę do katalogu domowego Javy używaną do wykonywania demona Gradle (procesu w tle) w projekcie. Wybrana ścieżka jest przechowywana w polu java.home w pliku .gradle/config.properties. To pole możesz ustawić w ustawieniach JDK Gradle w Android Studio: Plik (lub Android Studio na macOS) > Ustawienia > Kompilacja, wykonanie, wdrażanie > Narzędzia do kompilacji > Gradle.

Nowe projekty będą domyślnie korzystać z #GRADLE_LOCAL_JAVA_HOME. Istniejące projekty zostaną automatycznie przeniesione do nowego makra po udanej synchronizacji, chyba że używasz już makra, np. #JAVA_HOME.

Główne zalety nowego makra:

  • Możesz ręcznie zmodyfikować ścieżkę JDK, aby wywołać synchronizację bez otwierania projektu.
  • Mniej błędów związanych z niezgodnymi wersjami Gradle i JDK projektu, ponieważ istnieje jedno źródło informacji o wyborze JDK Gradle.

Rozwiązane problemy

Wtyczka Androida do obsługi Gradle w wersji 8.2.2

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Nie można ustawić wersji JaCoCo w AGP 8.2.0
Dexer (D8)
[desugared library] Biblioteka desugared w wersji 2.1 jest niezgodna z poprzednimi wersjami R8
Optymalizacje wykonywane już na poziomie kompilatora D8?
Kompresor (R8)
[R8 8.3.21] R8 8.3.21 jest o 1,57 MB większy niż R8 8.1.56
class.getInterfaces() zwraca pustą wartość

Wtyczka Androida do obsługi Gradle w wersji 8.2.1

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Nie uruchamiaj zadania dexing na klasach podprojektów, jeśli zostały już one przekształcone w ramach przekształceń artefaktów.
Wtyczka Androida do obsługi Gradle nie działa z wersją JavaVersion.VERSION_11 i OpenJDK 21 ea
Dexer (D8)
Desugaryzacja rekordów na Androidzie U
Kompresor (R8)
R8 generuje uszkodzony plik DEX, co powoduje wyjątek ClassCastException w czasie działania
R8 powoduje zmianę interfejsu na niedostępny
Awaria pakietu SDK Flurry w R8 w przypadku wtyczki AGP 8.2.0
Android – R8 powoduje awarię podklasy LinearLayoutManager
ClassCastException w R8, gdy włączone jest ponowne pakowanie, a kompresowanie, zaciemnianie i optymalizacja są wyłączone
R8 utknął w funkcji BridgeAnalyzer.analyzeMethod
R8 w wersji 8.2.33, błąd wykonania „java.lang.VerifyError: Bad type on operand stack” po uaktualnieniu

Wtyczka Androida do obsługi Gradle w wersji 8.2.0

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Niestandardowe typy źródeł powinny tworzyć zestawy źródeł o wielu wersjach
Sprawdzanie wersji pakietu SDK nie obejmuje użytkowników rozszerzeń pakietu SDK
DependenciesInfoBuilder wymaga aktualizacji interfejsu API i dokumentacji
DexingNoClasspathTransform (minSdk >= 24) z Java 11 kończy się niepowodzeniem z powodu braku zagnieżdżonych elementów
Funkcja DslExtension.Builder.extendProjectWith() nie działa zgodnie z opisem w Groovy
Dodanie interfejsu API VariantSelector.withFlavor, który nie używa kotlin.Pair
Zadanie AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) nie znalazło danych w pamięci podręcznej, ponieważ plik „proguard.txt” uległ zmianie
Manifest łączony aplikacji zawiera atrybuty extractNativeLibs i useEmbeddedDex z zależności
Błąd AIDL w przypadku narzędzi do kompilacji w wersji 33.0.0
AGP: udostępnianie ścieżki do narzędzia AIDL i pliku AIDL platformy jako publicznego interfejsu API
Żądanie: pozwól IDE zaproponować rozwiązanie problemu „PermittedSubclasses wymaga ASM9”
Kompilowanie AGP z użyciem docelowego kodu bajtowego 17
Usuwanie funkcji VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols nie wpływa na pakowanie androidTest
Zadania testu z instrumentacją GMD zawieszają się, a po ponowieniu próby zaczynają kończyć się niepowodzeniem
Funkcja generateLocaleConfig w AGP 8.1.0 używa niedeterministycznego porządkowania, co uniemożliwia tworzenie powtarzalnych kompilacji
ProcessApplicationManifest.navigationJsons zawiera pliki ze ścieżkami bezwzględnymi
Po utworzeniu usługi AnalyticsService nie można uzyskać dostępu do GradleBuildProject.Builder za pomocą AnalyticsConfiguratorService
AndroidTest.packaging.jniLibs.keepDebugSymbols nie wpływa na pakowanie androidTest
Kompilacja dozwolona w przypadku nieprawidłowych wartości kolorów
Nieprawidłowa wartość „ReplaceWith” w przypadku elementu VariantBuilder
Gradle 8.1 przerywa buforowanie konfiguracji z powodu pliku .gradle/.android/analytics.settings
Komunikaty o wycofaniu nie używają parametru `ReplaceWith`
Udostępnianie sposobu uzyskiwania domyślnej wersji NDK
Wtyczka Androida do obsługi Gradle wymaga do działania Javy 17.
Niezgodność ASM Transform i toAppend()
Naprawianie błędów LintErrors podczas uruchamiania lint z K2 UAST za pomocą Gradle w projekcie KMP
Obsługa parametru missingDimensionStrategy na poziomie wariantu i ewentualnie rodzaju kompilacji lub dopasowywania wersji
W Android Studio Giraffe usunięto parametr `android.injected.studio.version`
Dodanie możliwości wyłączenia AndroidXDependencyCheck
Funkcja generateLocaleConfig w AGP 8.1.0 używa niedeterministycznego porządkowania, co uniemożliwia tworzenie powtarzalnych kompilacji
Informowanie o wymaganiach dotyczących wersji R8 / D8 w metadanych AAR (np. w przypadku coreLibraryDesugaring i nowego wyodrębniania interfejsu API)
Ostrzeżenie o synchronizacji: „GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created”
Aktualizacja do wersji Gradle 8.2 (milestone lub RC)
Nie można uzyskać dostępu do klasy „java.lang.Comparable”
androidResources jest niedostępny w module biblioteki Androida
Po uaktualnieniu wtyczki Androida do obsługi Gradle z wersji 8.0.2 do 8.1.0 nie udało się wykonać zadania „:app:mergeReleaseClasses”
Gradle 8.1 przerywa buforowanie konfiguracji z powodu pliku .gradle/.android/analytics.settings
[AGP 8.1.0] Test ./gradlew kończy się niepowodzeniem z błędem „Unable to find manifest output”, jeśli zarówno splits.abi.isEnable, jak i testOptions.unitTests.isIncludeAndroidResources mają wartość true
Android Studio Giraffe nie uwzględnia versionCodeOverride w przypadku AGP 8.1
Wtyczka Androida do obsługi Gradle w wersji 8.1.0 odinstalowuje aplikację po uruchomieniu testów instrumentalnych, a wersja 7.4.2 tego nie robi
Przekształcenie pliku APK powoduje błąd w przypadku zadania ListingFileRedirectTask
HEDGEHOG REGRESSION: przycisk uruchamiania jest opóźniony o kilka sekund (tworzenie specyfikacji)
Dexer (D8)
Włącz natywne nagrywanie i zamknięte klasy podczas indeksowania plików DEX w przypadku interfejsu API o wersji co najmniej 34
Linter
Utworzone sprawdzenie lintera nie obsługuje prawidłowo klasy AppComponentFactory
Wersje alfa Lint 8.2.0 nadal nie obsługują importowania funkcji najwyższego poziomu w języku Kotlin
Dodanie opcji, która pozwala nie uwzględniać w linii bazowej narzędzia lint numerów wierszy i kolumn
Dodanie opcji, która pozwala nie uwzględniać w linii bazowej narzędzia lint numerów wierszy i kolumn
Testy Lint nie obsługują funkcji języka Java 17
Bumblebee 2021.1.1 Patch 1 informuje, że stara wersja (20030203.000550) biblioteki commons-io jest nowsza niż wersja 2.11.0.
Wersje alfa Lint 8.2.0 nadal nie obsługują importowania funkcji najwyższego poziomu w języku Kotlin
Bumblebee 2021.1.1 Patch 1 informuje, że stara wersja (20030203.000550) biblioteki commons-io jest nowsza niż wersja 2.11.0.
Android Studio nieprawidłowo oznacza określoną wersję jako nieaktualną.
Lint ignoruje problem UseValueOf podczas korzystania z K2 UAST
Nieoczekiwane problemy z innego projektu wykryte przez narzędzie Android Lint
Android Lint zgłasza nie działa w przypadku biblioteki KMP, gdy „właściwość 'variantInputs.name' nie ma skonfigurowanej wartości”.
Integracja z linterem
Błąd lintera DuplicatePlatformClasses z zależności testImplementation
Kompresor (R8)
java.lang.VerifyError: klasa odrzucona przez weryfikator
Podczas korzystania z biblioteki Apache POI kompilacja zawiesza się na etapie :minifyReleaseWithR8
Kotlin 1.9 powoduje, że R8 niszczy lambdy Kotlina, jeśli usunięte zostaną sprawdzania wartości null