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

Wtyczka Androida do obsługi Gradle w wersji 8.2.0 to duża aktualizacja, która zawiera wiele nowych funkcji i ulepszeń.

Zgodność

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

Wersja minimalna Wersja domyślna Uwagi
Gradle 8.2 8.2 Więcej informacji znajdziesz w sekcji Aktualizowanie Gradle.
SDK Build Tools 34.0.0 34.0.0 Zainstaluj lub skonfiguruj narzędzia do kompilacji pakietu SDK.
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 jest określić ś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. Ustaw to pole w ustawieniach Gradle JDK 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 takiego jak #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 wybranym JDK Gradle.

Rozwiązane problemy

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 różnych 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 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 powoduje przerwanie buforowania 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ść przekształcenia ASM i metody toAppend()
Rozwiązywanie błędów LintErrors podczas uruchamiania narzędzia lint z K2 UAST za pomocą Gradle w projekcie KMP
Obsługa strategii missingDimensionStrategy na poziomie wariantu i ewentualnie dopasowywania typu kompilacji lub 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” (Nie należy uzyskiwać dostępu do GradleBuildProject.Builder za pomocą AnalyticsConfiguratorService po utworzeniu AnalyticsService)
Aktualizacja do wersji Gradle 8.2 (milestone lub RC)
Nie można uzyskać dostępu do elementu „java.lang.Comparable”
androidResources jest niedostępny w module biblioteki Androida
Nie udało się wykonać zadania „:app:mergeReleaseClasses” po zaktualizowaniu AGP z 8.0.2 do 8.1.0
Gradle 8.1 powoduje przerwanie buforowania konfiguracji z powodu pliku .gradle/.android/analytics.settings
[AGP 8.1.0] ./gradlew test 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 parametru versionCodeOverride w przypadku AGP 8.1
AGP 8.1.0 odinstalowuje aplikację po uruchomieniu testów z instrumentacją, a wersja 7.4.2 tego nie robi
Przekształcenie pliku APK powoduje błąd w przypadku zadania ListingFileRedirectTask
HEDGEHOG REGRESSION: przycisk Uruchom jest opóźniony o kilka sekund (tworzenie specyfikacji)
Dexer (D8)
Włączanie natywnego nagrywania i zamkniętych klas podczas dexowania w przypadku interfejsu API w wersji 34 lub nowszej
Lint
Utworzone sprawdzanie Lint nie obsługuje dobrze 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
Narzędzie Android Lint zgłasza błąd w bibliotece KMP z komunikatem „property 'variantInputs.name' doesn't have a configured value.” (właściwość „variantInputs.name” nie ma skonfigurowanej wartości).
Integracja z Lint
Błąd lint 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 Kotlin, jeśli usunięte zostaną sprawdzania wartości null

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 artefakty.
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 AGP 8.2.0
Android – R8 powoduje awarię podklasy LinearLayoutManager
ClassCastException w R8, gdy włączone jest ponowne pakowanie, a wyłączone kompresowanie, zaciemnianie i optymalizacja
R8 utknął w funkcji BridgeAnalyzer.analyzeMethod
Błąd środowiska wykonawczego R8 w wersji 8.2.33 „java.lang.VerifyError: Bad type on operand stack” po uaktualnieniu

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
Czy optymalizacje działają nawet w przypadku D8?
Shrinker (R8)
[R8 8.3.21] R8 8.3.21 jest o 1,57 MB większa niż R8 8.1.56
class.getInterfaces() zwraca pustą wartość