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 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 JDK Gradle w Android Studio: File (lub Android Studio na macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle (Plik > Ustawienia > Kompilacja, uruchamianie, wdrażanie > Narzędzia do kompilacji > Gradle).

W nowych projektach domyślnie będzie używane makro #GRADLE_LOCAL_JAVA_HOME. Istniejące projekty zostaną automatycznie przeniesione do nowego makra po pomyślnej 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 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] Desugared library w wersji 2.1 nie jest zgodna 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 w przypadku klas podprojektów, jeśli zostały już one zdekodowane za pomocą przekształceń artefaktów
Wtyczka Androida do obsługi Gradle nie działa z JavaVersion.VERSION_11 i OpenJDK 21 ea
Dexer (D8)
Desugar records for Android U
Kompresor (R8)
R8 generuje uszkodzony plik dex, co powoduje wyjątek ClassCastException w czasie działania
R8 powoduje zmianę interfejsu na niedostępny
R8 Flurry SDK powoduje awarię w AGP 8.2.0
Android – R8 powoduje awarię podklasy LinearLayoutManager
ClassCastException w R8, gdy włączone jest przepakowywanie, a wyłączone jest zmniejszanie, zaciemnianie i optymalizacja
R8 utknął w BridgeAnalyzer.analyzeMethod
R8 w wersji 8.2.33, awaria w czasie działania „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ć zbiory źródeł z wieloma wariantami
Sprawdzanie wersji pakietu SDK nie obsługuje 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 elementów zagnieżdżonych
DslExtension.Builder.extendProjectWith() nie działa zgodnie z opisem w Groovy
Dodaj interfejs API VariantSelector.withFlavor, który nie używa kotlin.Pair
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) ma brak w pamięci podręcznej, ponieważ zmienił się plik `proguard.txt`
Manifest łączony aplikacji zawiera atrybuty extractNativeLibs i useEmbeddedDex z zależności
AIDL nie działa z narzędziami do kompilacji w wersji 33.0.0
AGP: udostępnij ścieżkę do narzędzia AIDL i pliku AIDL frameworka jako publiczny interfejs API
Prośba: pozwól IDE zaproponować rozwiązanie problemu „PermittedSubclasses wymaga ASM9”
Docelowy kod bajtowy 17 podczas kompilowania AGP
Usuń VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols nie wpływa na pakowanie androidTest
Zadania testów z instrumentacją GMD zawieszają się, a po ponowieniu zaczynają się niepowodzeniem
generateLocaleConfig w agp 8.1.0 używa niedeterministycznego porządkowania, co powoduje przerwanie powtarzalnych kompilacji
ProcessApplicationManifest.navigationJsons zawiera pliki ze ścieżkami bezwzględnymi
Dostęp do GradleBuildProject.Builder przez AnalyticsConfiguratorService jest niedozwolony po utworzeniu AnalyticsService
AndroidTest.packaging.jniLibs.keepDebugSymbols nie wpływa na pakowanie androidTest
Kompilacja dozwolona w przypadku nieprawidłowych wartości kolorów
Nieprawidłowa wartość „ReplaceWith” dla VariantBuilder
Gradle 8.1 przerywa buforowanie konfiguracji z powodu pliku .gradle/.android/analytics.settings
Komunikaty o wycofaniu nie używają `ReplaceWith`
Udostępnij sposób uzyskania domyślnej wersji NDK
Do uruchomienia wtyczki Androida do obsługi Gradle wymagana jest Java 17.
Niezgodność ASM Transform i toAppend()
Napraw błędy lintera podczas uruchamiania lintera z K2 UAST za pomocą Gradle w projekcie KMP
Obsługa missingDimensionStrategy na poziomie wariantu i ewentualnie matchingFallback dla rodzaju kompilacji/rodzaju
`android.injected.studio.version` został usunięty w Android Studio Giraffe
Dodaj możliwość wyłączenia AndroidXDependencyCheck
generateLocaleConfig w agp 8.1.0 używa niedeterministycznego porządkowania, co powoduje przerwanie powtarzalnych kompilacji
Informuj o wymaganiach dotyczących wersji R8 / D8 w metadanych AAR (np. w przypadku coreLibraryDesugaring i nowego API out-of-lining)
Ostrzeżenie o synchronizacji: „Nie należy uzyskiwać dostępu do GradleBuildProject.Builder przez AnalyticsConfiguratorService po utworzeniu AnalyticsService”
Aktualizacja do wersji Gradle 8.2 milestone lub RC
Nie można uzyskać dostępu do „java.lang.Comparable”
androidResources nie jest dostępny w module biblioteki Androida
Po zaktualizowaniu 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 AGP 8.1
AGP 8.1.0 odinstalowuje aplikację po uruchomieniu testów instrumentacji – 7.4.2 tego nie robi
Przekształcanie pliku APK powoduje błąd w ListingFileRedirectTask
HEDGEHOG REGRESSION: przycisk uruchamiania jest opóźniony o kilka sekund (tworzenie specyfikacji)
Dexer (D8)
Włącz natywne rekordy i klasy zapieczętowane podczas dekodowania dla min-api 34 i nowszych
Linter
Sprawdzanie lintera nie obsługuje dobrze AppComponentFactory
Wersje alfa lintera 8.2.0 nadal nie obsługują importowania funkcji najwyższego poziomu w Kotlinie
Dodaj opcję, aby nie uwzględniać numerów wierszy i kolumn w linii bazowej lintera
Dodaj opcję, aby nie uwzględniać numerów wierszy i kolumn w linii bazowej lintera
Testy lintera nie obsługują funkcji języka Java 17
Bumblebee 2021.1.1 Patch 1 informuje, że stara wersja (20030203.000550) commons-io jest nowsza niż 2.11.0.
Wersje alfa lintera 8.2.0 nadal nie obsługują importowania funkcji najwyższego poziomu w Kotlinie
Bumblebee 2021.1.1 Patch 1 informuje, że stara wersja (20030203.000550) commons-io jest nowsza niż 2.11.0.
Android Studio nieprawidłowo oznacza określoną wersję jako nieaktualną.
Linter ignoruje problem UseValueOf podczas korzystania z K2 UAST
Nieoczekiwane problemy z innego projektu oznaczone 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
Kompresor (R8)
java.lang.VerifyError: klasa odrzucona przez weryfikator
Kompilacja zawiesza się na :minifyReleaseWithR8 podczas korzystania z biblioteki Apache POI
Kotlin 1.9 powoduje, że lambdy Kotlinu są niszczone przez R8, jeśli usunięte zostaną sprawdzania wartości null