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 Aktualizowanie Gradle.
Narzędzia do kompilacji pakietu SDK 34.0.0 34.0.0 Zainstaluj lub skonfiguruj narzędzia SDK Build Tools.
NDK Nie dotyczy 25.1.8937393 Zainstaluj lub skonfiguruj inną wersję NDK.
JDK 17 17 Więcej informacji znajdziesz w artykule Ustawianie 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 głównego 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 wybranej wersji 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?
Shrinker (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 JavaVersion.VERSION_11 i OpenJDK 21 ea
Dexer (D8)
Desugaryzacja rekordów na Androidzie U
Shrinker (R8)
R8 generuje uszkodzony plik DEX, co powoduje wyjątek rzutowania klasy w czasie działania
R8 powoduje zmianę interfejsu na niedostępny
Awaria pakietu SDK Flurry w R8 w przypadku wtyczki Androida do obsługi Gradle 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
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” został zmieniony
Scalony manifest aplikacji zawiera atrybuty extractNativeLibs i useEmbeddedDex z zależności
AIDL kończy się niepowodzeniem 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”
Podczas kompilowania AGP kieruj na kod bajtowy 17
Usuwanie funkcji VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols nie wpływa na pakowanie androidTest
Zadania testu instrumentacji 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 odtwarzalne kompilacje.
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 klasy VariantBuilder
Gradle 8.1 przerywa buforowanie konfiguracji z powodu pliku .gradle/.android/analytics.settings
Wiadomości 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 typu 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 odtwarzalne kompilacje.
Ogłaszanie wymagań 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
Nie udało się wykonać zadania „:app:mergeReleaseClasses” po zaktualizowaniu AGP z wersji 8.0.2 do 8.1.0
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
AGP 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 dexowania w przypadku interfejsu API w wersji 34 lub nowszej.
Linter
Utworzone sprawdzanie 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ć numerów wierszy i kolumn w linii bazowej lint
Dodanie opcji, która pozwala nie uwzględniać numerów wierszy i kolumn w linii bazowej lint
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 zgłoszone przez 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
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Podczas korzystania z biblioteki Apache POI kompilacja zawiesza się na etapie :minifyReleaseWithR8
Kotlin 1.9 powoduje, że R8 usuwa lambdy Kotlina, jeśli usunięte zostaną sprawdzania wartości null