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 interfejsu API obsługiwany przez wtyczkę Gradle 8.2 to 34. Oto inne informacje o zgodności:

Minimalna wersja Wersja domyślna Uwagi
Gradle 8.2 8.2 Więcej informacji znajdziesz w artykule Aktualizowanie Gradle.
Narzędzia do kompilowania pakietu SDK 34.0.0 34.0.0 Zainstaluj lub skonfiguruj narzędzia do kompilowania pakietu SDK.
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 do JDK

#GRADLE_LOCAL_JAVA_HOME to nowe makro, które umożliwia określenie ścieżki do JDK. Dzięki temu łatwiej i bezpieczniej można określić ścieżkę do katalogu domowego Java, która jest używana do wykonywania demona Gradle (procesu w tle) w przypadku projektu. Wybór ścieżki jest zapisany w polu java.home w pliku .gradle/config.properties. Aby ustawić to pole, otwórz ustawienia JDK w Android Studio: Plik (lub Android Studio w przypadku systemu macOS) > Ustawienia > Kompilacja, wykonanie, wdrożenie > Narzędzia kompilacji > Gradle.

Nowe projekty będą domyślnie używać #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 zmienić ścieżkę do 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 Gradle JDK.

Rozwiązane problemy

Wtyczka Androida do obsługi Gradle 8.2.0

Rozwiązane problemy
Wtyczka Gradle na Androida
Typy niestandardowych źródeł powinny tworzyć źródła o wielu smakach
Sprawdzanie wersji pakietu SDK nie obsługuje użytkowników rozszerzeń pakietu SDK
DependenciesInfoBuilder wymaga aktualizacji interfejsu API i dokumentacji
DexingNoClasspathTransform (minSdk >= 24) z obiektem 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
Zadanie AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) nie znalazło danych w pamięci podręcznej, ponieważ plik „proguard.txt” uległ zmianie
Złączony plik manifestu aplikacji zawiera atrybuty extractNativeLibs i useEmbeddedDex z zależnych bibliotek
AIDL nie działa z build-tools 33.0.0
AGP: udostępnienie ścieżki do narzędzia AIDL i pliku AIDL frameworku jako publicznego interfejsu API
Prośba: umożliwienie IDE proponowane rozwiązanie problemu „PermittedSubclasses requires ASM9”
podczas kompilowania AGP wybierz kod bajtowy 17.
Usuń VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols nie ma wpływu na pakowanie androidTest
Zawieszanie się zadań testu instrumentacji GMD i nieudane próby ponownego uruchomienia
Funkcja generateLocaleConfig w wersji agp 8.1.0 używa niedeterministycznego sortowania, co powoduje niemożność tworzenia kompilacji powtarzalnych
Plik ProcessApplicationManifest.navigation.json zawiera ścieżki bezwzględne.
Po utworzeniu usługi AnalyticsService nie można uzyskać dostępu do GradleBuildProject.Builder za pomocą AnalyticsConfiguratorService
AndroidTest.packaging.jniLibs.keepDebugSymbols nie ma wpływu na pakowanie androidTest
Kompilacja dozwolona w przypadku nielegalnych wartości kolorów
Nieprawidłowa wartość „ReplaceWith” w przypadku narzędzia VariantBuilder
Gradle 8.1 powoduje przerwanie buforowania konfiguracji z powodu pliku .gradle/.android/analytics.settings
Komunikaty o wycofaniu nie używają atrybutu „ReplaceWith”
Udostępnij sposób uzyskania domyślnej wersji NDK
Wtyczka Androida do obsługi Gradle wymaga wersji Java 17.
Niezgodność funkcji ASM Transform i toAppend()
Rozwiązywanie problemów z błędami Lint podczas uruchamiania lint z K2 UAST za pomocą Gradle w projekcie KMP
Obsługa strategii braku wymiaru na poziomie wariantu i możliwe tworzenie typu/smakowania dopasowania do zapasowego.
W Android Studio Giraffe usunięto parametr `android.injected.studio.version`.
Dodanie możliwości wyłączenia AndroidXDependencyCheck
Funkcja generateLocaleConfig w wersji agp 8.1.0 używa niedeterministycznego sortowania, co powoduje niemożność tworzenia kompilacji powtarzalnych
Zamieszczanie w metadanych AAR informacji o wymaganiach dotyczących wersji R8 / D8 (np.w przypadku coreLibraryDesugaring i nowego wyprowadzania interfejsu API).
Ostrzeżenie dotyczące synchronizacji: „Po utworzeniu usługi AnalyticsService nie należy uzyskiwać dostępu do GradleBuildProject.Builder za pomocą AnalyticsConfiguratorService”.
Zaktualizuj do wersji kamienia milowego lub wersji kandydata Gradle 8.2.
Brak 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 na 8.1.0
Gradle 8.1 powoduje przerwanie buforowania konfiguracji z powodu pliku .gradle/.android/analytics.settings
[AGP 8.1.0] ./gradlew test fails with "Unable to find manifest output" if both splits.abi.isEnable and testOptions.unitTests.isIncludeAndroidResources are true
Android Studio Giraffe nie uwzględnia wersji versionCodeOverride w AGP 8.1
AGP 8.1.0 odinstalowuje aplikację po uruchomieniu testów z instrumentacją, a 7.4.2 tego nie robi
Przekształcanie pliku APK powoduje błąd w ListingFileRedirectTask
HEDGEHOG REGRESSION: przycisk Uruchom jest opóźniony o kilka sekund (tworzenie specyfikacji)
Dexer (D8)
Włączanie natywnych klas rekordów i zamkniętych podczas dekodowania w przypadku wersji min-api 34 lub nowszej
Lint
Sprawdzanie lint w instancji nie obsługuje dobrze AppComponentFactory
Wersje alfa Lint 8.2.0 nadal nie obsługują importowania funkcji najwyższego poziomu w Kotlinie
Dodanie opcji umożliwiającej pominięcie numerów wierszy i kolumn w podstawowym zestawie danych lint
Dodanie opcji umożliwiającej pominięcie numerów wierszy i kolumn w podstawowym zestawie danych lint
Testy Lint nie obsługują funkcji języka Java 17
Bumblebee 2021.1.1 Patch 1 podaje, że stara wersja (20030203.000550) commons-io jest nowsza niż 2.11.0.
Wersje alfa Lint 8.2.0 nadal nie obsługują importowania funkcji najwyższego poziomu w Kotlinie
Bumblebee 2021.1.1 Patch 1 podaje, że stara wersja (20030203.000550) commons-io jest nowsza niż 2.11.0.
Android Studio nieprawidłowo oznacza wybraną wersję jako nieaktualną.
Lint ignoruje problem z UseValueOf podczas używania K2 UAST
nieoczekiwane problemy z innego projektu oznaczone przez Android Lint,
Android Lint nie działa w przypadku biblioteki KMP, gdy „właściwość 'variantInputs.name' nie ma skonfigurowanej wartości”.
Integracja z lintem
Błąd lint DuplicatePlatformClasses z powodu zależności od testImplementation
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Kompilacja utknęła na etapie :minifyReleaseWithR8 podczas używania biblioteki Apache POI
Kotlin 1.9 powoduje, że funkcje anonimowe Kotlina są usuwane przez R8, jeśli usunięto nullchecks

Wtyczka Androida do obsługi Gradle 8.2.1

Rozwiązane problemy
Wtyczka Gradle na Androida
Nie uruchamiaj zadania dekompilacji w przypadku klas w podprojektach, które zostały już zdekompilowane w ramach przekształceń artefaktów
Wtyczka Androida do obsługi Gradle nie działała prawidłowo w przypadku JavaVersion.VERSION_11 i OpenJDK 21 ea
Dexer (D8)
Desugarowanie rekordów w Android U
Shrinker (R8)
R8 generuje uszkodzony dex, co powoduje wyjątek podczas wykonywania kodu w klasie
R8 powodujący zmianę interfejsu na niedostępny
Awaria pakietu Flurry SDK w wersji 8.2.0 w ramach AGP
Android – R8 powoduje awarię podklasy LinearLayoutManager
ClassCastException w R8, gdy repackaging jest włączony, a skompresowanie, zaciemnianie i optymalizacja są wyłączone
R8 utknął w BridgeAnalyzer.analyzeMethod
R8 w wersji 8.2.33, błąd czasu wykonywania „java.lang.VerifyError: Bad type on operand stack” po uaktualnieniu

Wtyczka Androida do obsługi Gradle 8.2.2

Rozwiązane problemy
Wtyczka Gradle na Androida
Nie można ustawić wersji JaCoCo w AGP 8.2.0
Dexer (D8)
[desugared library] Desugared library version 2.1 is not compatible with previous versions of R8
Czy optymalizacje są przeprowadzane tylko z 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ść