Informacje o wersji wtyczki Androida do obsługi Gradle w wersji zapoznawczej

Ta strona zawiera informacje o wersjach próbnych wtyczki Androida do Gradle (AGP).

Wtyczka Androida do obsługi Gradle w wersji 9.0

Wtyczka Androida do obsługi Gradle w wersji 9.0 to nowa wersja główna AGP, która wprowadza zmiany w interfejsie API i zachowaniu.

Aby zaktualizować wtyczkę Androida do obsługi Gradle do wersji 9.0.0-rc02, użyj asystenta uaktualniania wtyczki Androida do obsługi Gradle w Android Studio Panda | 2025.3.1.

Asystent uaktualniania AGP pomaga zachować dotychczasowe działanie podczas uaktualniania projektu, gdy jest to odpowiednie. Umożliwia to uaktualnienie projektu do AGP 9.0, nawet jeśli nie chcesz jeszcze stosować wszystkich nowych ustawień domyślnych w AGP 9.0.

Zgodność

Maksymalny poziom interfejsu Android API obsługiwany przez wtyczkę Androida do Gradle w wersji 9.0.0-rc02 to poziom 36.

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-rc02 wymaga Gradle w wersji 9.0.0.

Wersja minimalna Wersja domyślna Uwagi
Gradle 9.1.0 9.1.0 Więcej informacji znajdziesz w artykule Aktualizowanie Gradle.
Narzędzia do kompilacji pakietu SDK 36.0.0 36.0.0 Zainstaluj lub skonfiguruj narzędzia SDK Build Tools.
NDK Nie dotyczy 28.2.13676358 Zainstaluj lub skonfiguruj inną wersję NDK.
JDK 17 17 Więcej informacji znajdziesz w artykule Ustawianie wersji JDK.

Klasy android DSL implementują teraz tylko nowe interfejsy publiczne.

W ciągu ostatnich kilku lat wprowadziliśmy nowe interfejsy dla naszego języka DSL i interfejsu API, aby lepiej kontrolować, które interfejsy API są publiczne. Wersje AGP 7.x i 8.x nadal używały starych typów DSL (np. BaseExtension), które również implementowały nowe interfejsy publiczne, aby zachować zgodność w miarę postępu prac nad interfejsami.

Wtyczka Androida do obsługi Gradle 9.0 korzysta wyłącznie z naszych nowych interfejsów DSL, a implementacje zostały zmienione na nowe typy, które są w pełni ukryte. Spowoduje to również usunięcie dostępu do starego, wycofanego interfejsu API wariantu.

Aby zaktualizować wtyczkę Androida do obsługi Gradle do wersji 9.0, może być konieczne wykonanie tych czynności:

  • Upewnij się, że projekt jest zgodny z wbudowanym Kotlinem: wtyczka org.jetbrains.kotlin.android nie jest zgodna z nowym DSL.
  • Przełącz projekty KMP na wtyczkę biblioteki Gradle Androida dla KMP: używanie wtyczki org.jetbrains.kotlin.multiplatform w tym samym podprojekcie Gradle co wtyczki com.android.librarycom.android.application jest niezgodne z nowym DSL.

  • Zaktualizuj pliki kompilacji: zmiana interfejsów ma na celu zachowanie jak największego podobieństwa do DSL, ale mogą wystąpić niewielkie zmiany.

  • Zaktualizuj niestandardową logikę kompilacji, aby odwoływała się do nowego języka DSL i interfejsu API: zastąp wszystkie odwołania do wewnętrznego języka DSL interfejsami publicznego języka DSL. W większości przypadków będzie to zamiana 1:1. Zastąp wszystkie użycia interfejsów API applicationVariants i podobnych nowym androidComponents API. Może to być bardziej skomplikowane, ponieważ androidComponents interfejs API został zaprojektowany tak, aby był bardziej stabilny i zapewniał dłuższą zgodność wtyczek. Przykłady znajdziesz w przepisach Gradle.

  • Zaktualizuj wtyczki innych firm: niektóre wtyczki innych firm mogą nadal korzystać z interfejsów lub interfejsów API, które nie są już udostępniane. Przejdź na wersje tych wtyczek, które są zgodne z AGP 9.0.

Przejście na nowe interfejsy DSL uniemożliwia wtyczkom i skryptom kompilacji Gradle korzystanie z różnych wycofanych interfejsów API, w tym:

Wycofany interfejs API w bloku android Funkcja Wymiana
applicationVariants,
libraryVariants,
testVariants i
unitTestVariants
Punkty rozszerzeń dla wtyczek, które umożliwiają dodawanie nowych funkcji do AGP. Zastąp go interfejsem API androidComponents.onVariants, na przykład:
androidComponents {
    onVariants() { variant ->
        variant.signingConfig
            .enableV1Signing.set(false)
    }
}
Nie wszystkie poprzednie interfejsy API mogą mieć bezpośrednie odpowiedniki. Zgłoś problem, jeśli istnieje przypadek użycia, który nie jest objęty nowymi interfejsami API wariantów.
variantFilter Umożliwia wyłączenie wybranych wariantów. Zastąp go interfejsem API androidComponents.beforeVariants, na przykład:
androidComponents {
    beforeVariants(
        selector()
            .withBuildType("debug")
            .withFlavor("color", "blue")
    ) { variantBuilder ->
        variantBuilder.enable = false
    }
  }
deviceProvider oraz
testServer
Rejestracja niestandardowych środowisk testowych do przeprowadzania testów na urządzeniach i emulatorach z Androidem. Przełącz się na urządzenia zarządzane przez Gradle.
sdkDirectory,
ndkDirectory,
bootClasspath,
adbExecutable i
adbExe
Używanie różnych komponentów pakietu Android SDK do wykonywania niestandardowych zadań. Przełącz na androidComponents.sdkComponents.
registerArtifactType,
registerBuildTypeSourceProvider,
registerProductFlavorSourceProvider,
registerJavaArtifact,
registerMultiFlavorSourceProvider i
wrapJavaSourceSet
Przestarzałe funkcje związane głównie z obsługą wygenerowanych źródeł w Android Studio, które przestały działać w AGP 7.2.0. Nie ma bezpośredniego zamiennika tych interfejsów API.
dexOptions Przestarzałe ustawienia związane z narzędziem dx, które zostało zastąpione przez d8. Żadne z tych ustawień nie ma wpływu na działanie wtyczki Androida do obsługi Gradle w wersji 7.0. Nie ma bezpośredniego zamiennika.
generatePureSplits Generowanie podziałów konfiguracji dla aplikacji błyskawicznych. Możliwość dostarczania podziałów konfiguracji jest teraz wbudowana w pakiety aplikacji na Androida.
aidlPackagedList Pliki AIDL do spakowania w AAR, aby udostępnić je jako interfejs API bibliotek i aplikacji, które są od tej biblioteki zależne. Jest ona nadal widoczna w przypadku LibraryExtension , ale nie w przypadku innych typów rozszerzeń.

Jeśli po uaktualnieniu do AGP 9.0 zobaczysz ten komunikat o błędzie, oznacza to, że projekt nadal odwołuje się do niektórych starych typów:

java.lang.ClassCastException: class com.android.build.gradle.internal.dsl.ApplicationExtensionImpl$AgpDecorated_Decorated
cannot be cast to class com.android.build.gradle.BaseExtension

Jeśli blokują Cię niekompatybilne wtyczki innych firm, możesz zrezygnować z nich i przywrócić stare implementacje DSL oraz stary interfejs API wariantów. W tym czasie nowe interfejsy są też dostępne i nadal możesz zaktualizować własną logikę kompilacji do nowego interfejsu API. Aby zrezygnować, umieść ten wiersz w pliku gradle.properties:

android.newDsl=false

Możesz też rozpocząć uaktualnianie do nowych interfejsów API przed uaktualnieniem do AGP 9.0. Nowe interfejsy są dostępne w wielu wersjach AGP, więc możesz mieć połączenie nowych i starych. W dokumentacji referencyjnej interfejsu AGP API znajdziesz informacje o interfejsie API dla każdej wersji AGP oraz daty dodania poszczególnych klas, metod i pól.

W fazie alfa wersji 9.0 kontaktujemy się z autorami wtyczek, aby pomóc im dostosować i opublikować wtyczki w pełni zgodne z nowymi trybami. Ulepszymy też Asystenta uaktualniania AGP w Android Studio, aby ułatwić Ci migrację.

Jeśli zauważysz, że w nowym interfejsie DSL lub Variant API brakuje funkcji, jak najszybciej zgłoś problem.

Wbudowany język Kotlin

Wtyczka Androida do obsługi Gradle w wersji 9.0 wprowadza wbudowaną obsługę języka Kotlin i domyślnie ją włącza. Oznacza to, że nie musisz już stosować wtyczki org.jetbrains.kotlin.android (ani kotlin-android) w plikach kompilacji, aby kompilować pliki źródłowe Kotlin. Upraszcza to integrację Kotlina z AGP, pozwala uniknąć używania wycofanych interfejsów API i w niektórych przypadkach zwiększa wydajność.

Dlatego po uaktualnieniu projektu do AGP 9.0 musisz też przeprowadzić migrację na wbudowany język Kotlin lub zrezygnować.

Możesz też wybiórczo wyłączyć wbudowaną obsługę języka Kotlin w podprojektach Gradle, które nie zawierają źródeł w tym języku.

Zależność w czasie działania od wtyczki Kotlin Gradle

Aby zapewnić obsługę wbudowanego języka Kotlin, wtyczka Androida do obsługi Gradle w wersji 9.0 ma teraz zależność środowiska wykonawczego od wtyczki Gradle do obsługi języka Kotlin (KGP) w wersji 2.2.10. Oznacza to, że nie musisz już deklarować wersji KGP, a jeśli używasz wersji KGP starszej niż 2.2.10, Gradle automatycznie uaktualni ją do wersji 2.2.10. Podobnie, jeśli używasz wersji KSP starszej niż 2.2.10–2.0.2, AGP zaktualizuje ją do wersji 2.2.10–2.0.2, aby była zgodna z wersją KGP.

Uaktualnianie do wyższej wersji KGP

Aby używać wyższej wersji KGP lub KSP, dodaj ten kod do pliku najwyższego poziomu:

buildscript {
    dependencies {
        // For KGP
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KGP_VERSION")

        // For KSP
        classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin:KSP_VERSION")
    }
}

Przechodzenie na niższą wersję KGP

Wersję KGP możesz obniżyć tylko wtedy, gdy zrezygnujesz z wbudowanego języka Kotlin. Dzieje się tak, ponieważ AGP 9.0 domyślnie włącza wbudowany język Kotlin, a wbudowany język Kotlin wymaga KGP w wersji 2.2.10 lub nowszej.

Aby użyć starszej wersji KGP lub KSP, zadeklaruj tę wersję w pliku kompilacji najwyższego poziomu za pomocą deklaracji ścisłej wersji:

buildscript {
    dependencies {
        // For KGP
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
            version { strictly("KGP_VERSION") }
        }

        // For KSP
        classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin") {
            version { strictly("KSP_VERSION") }
        }
    }
}

Pamiętaj, że minimalna wersja KGP, do której możesz się cofnąć, to 2.0.0.

Obsługa środowiska IDE w przypadku plików testowych

AGP 9.0 zapewnia pełną obsługę środowiska IDE Android Studio w przypadku testów.

Wtyczka Fused Library

Wtyczka Fused Library Plugin (wersja przedpremierowa) umożliwia publikowanie wielu bibliotek jako pojedynczej biblioteki Androida AAR. Ułatwi to użytkownikom korzystanie z opublikowanych artefaktów.

Więcej informacji o tym, jak zacząć, znajdziesz w artykule Publikowanie wielu bibliotek Androida jako jednej za pomocą biblioteki Fused.

Zmiany w działaniu

Wtyczka Androida do obsługi Gradle w wersji 9.0 ma te nowe funkcje:

Działanie Rekomendacja
Wtyczka Androida do obsługi Gradle w wersji 9.0 domyślnie używa NDK w wersji r28c. Rozważ wyraźne określenie wersji NDK, której chcesz używać.
Wtyczka Androida do obsługi Gradle w wersji 9.0 domyślnie wymaga, aby użytkownicy biblioteki używali tej samej lub nowszej wersji pakietu SDK do kompilacji. Podczas korzystania z biblioteki używaj tego samego lub wyższego pakietu SDK do kompilacji. Jeśli nie jest to możliwe lub chcesz dać użytkownikom biblioteki, którą publikujesz, więcej czasu na przejście na nową wersję, ustaw wartość AarMetadata.minCompileSdk.

Wtyczka AGP 9.0 zawiera aktualizacje domyślnych wartości tych właściwości Gradle. Dzięki temu podczas uaktualniania możesz zachować działanie wtyczki Androida do obsługi Gradle 8.13:

Właściwość Funkcja Zmiana z AGP 8.13 na AGP 9.0 Rekomendacja
android.newDsl Używaj nowych interfejsów DSL bez ujawniania starszych implementacji bloku android.
Oznacza to również, że starsza wersja interfejsu API wariantów, np. android.applicationVariants nie jest już dostępna.
falsetrue Możesz zrezygnować z tej opcji, ustawiając parametr android.newDsl=false.
Gdy wszystkie wtyczki i logika kompilacji używane w projekcie będą zgodne, usuń rezygnację.
android.builtInKotlin Włącza wbudowany język Kotlin. falsetrue Przejdź na wbudowany język Kotlin, jeśli możesz, lub zrezygnuj z tej funkcji.
android.uniquePackageNames Wymaga, aby każda biblioteka miała inną nazwę pakietu. falsetrue Podaj unikalne nazwy pakietów dla wszystkich bibliotek w projekcie. Jeśli to niemożliwe, możesz wyłączyć tę flagę na czas migracji.
android.useAndroidx Używaj domyślnie zależności androidx. falsetrue Zaakceptuj zależności androidx.
android.default.androidx.test.runner Domyślnie uruchamiaj testy na urządzeniu za pomocą klasy androidx.test.runner.AndroidJUnitRunner zamiast domyślnej klasy InstrumentationTestRunner (która jest już przestarzała).
android {
  defaultConfig {
    testInstrumentationRunner = "..."
  }
}
falsetrue Adopt AndroidJUnitRunner, lub wyraźnie określ własny parametr testInstrumentationRunner.
android.dependency.useConstraints Określa użycie ograniczeń zależności między konfiguracjami.
Domyślne ustawienie w AGP 9.0 to false, które używa ograniczeń tylko w testach urządzeń aplikacji (AndroidTest). Ustawienie tej wartości na true przywróci działanie z wersji 8.13.
truefalse Nie używaj ograniczeń zależności wszędzie, chyba że jest to konieczne. Zaakceptowanie nowego domyślnego ustawienia tej flagi umożliwia też optymalizacje w procesie importowania projektu, co powinno skrócić czas importowania kompilacji z wieloma podprojektami biblioteki Androida.
android.enableAppCompileTimeRClass Kompiluj kod w aplikacjach z użyciem nieostatecznej klasy R, aby dostosować kompilację aplikacji do kompilacji biblioteki.
Zwiększa to przyrostowość i przygotowuje grunt pod przyszłe optymalizacje wydajności w przepływie przetwarzania zasobów.
falsetrue Wiele projektów może po prostu przyjąć nowe zachowanie bez wprowadzania zmian w kodzie źródłowym. Jeśli pola klasy R są używane w miejscach, które wymagają stałej, np. w przypadkach instrukcji switch, zmień kod, aby używać połączonych instrukcji if.
android.sdk.defaultTargetSdkToCompileSdkIfUnset Używa wersji pakietu SDK do kompilacji jako wartości domyślnej wersji pakietu SDK docelowego w aplikacjach i testach.
Przed tą zmianą docelowa wersja pakietu SDK była domyślnie ustawiana na minimalną wersję pakietu SDK.
falsetrue Określ bezpośrednio docelową wersję pakietu SDK dla aplikacji i testów.
android.onlyEnableUnitTestForTheTestedBuildType Tworzy tylko komponenty testów jednostkowych dla testowanego typu kompilacji.
W projekcie domyślnym powoduje to utworzenie jednego testu jednostkowego do debugowania, podczas gdy wcześniej testy jednostkowe były uruchamiane do debugowania lub wydania.
falsetrue Jeśli Twój projekt nie wymaga uruchamiania testów zarówno w przypadku wersji debugowania, jak i wersji do publikacji, nie musisz nic zmieniać.
android.proguard.failOnMissingFiles W przypadku braku na dysku któregokolwiek z plików do zachowania określonych w DSL AGP kompilacja zakończy się niepowodzeniem i wyświetli błąd. Przed tą zmianą literówki w nazwach plików powodowały, że pliki były cicho ignorowane. falsetrue Usuń nieprawidłowe deklaracje plików ProGuard
android.r8.optimizedResourceShrinking Umożliwia R8 zachowanie mniejszej liczby zasobów Androida, ponieważ uwzględnia klasy i zasoby Androida razem. falsetrue Jeśli reguły przechowywania w projekcie są już kompletne, nie musisz nic zmieniać.
android.r8.strictFullModeForKeepRules Umożliwia R8 zachowanie mniejszej liczby elementów, ponieważ nie zachowuje domyślnego konstruktora, gdy klasa jest zachowywana. Oznacza to, że -keep class A nie implikuje już -keep class A { <init>(); }
falsetrue Jeśli reguły przechowywania w projekcie są już kompletne, nie musisz nic zmieniać.

Zastąp -keep class A w regułach przechowywania projektu -keep class A { <init>(); } we wszystkich przypadkach, w których chcesz zachować domyślny konstruktor.
android.defaults.buildfeatures.resvalues Włącza resValues we wszystkich podprojektach truefalse Włącz resValues tylko w podprojektach, które tego wymagają, ustawiając w plikach kompilacji Gradle tych projektów te wartości:
android {
  buildFeatures {
    resValues = true
  }
}
android.defaults.buildfeatures.shaders Umożliwia kompilację shaderów we wszystkich podprojektach. truefalse Włącz kompilację shaderów tylko w podprojektach, które zawierają shadery do skompilowania, ustawiając w plikach kompilacji Gradle tych projektów te wartości:
android {
  buildFeatures {
    shaders = true
  }
}
android.r8.proguardAndroidTxt.disallowed W AGP 9.0 funkcja getDefaultProguardFile() będzie obsługiwać tylko proguard-android-optimize.txt, a nie proguard-android.txt. Ma to zapobiegać przypadkowemu użyciu flagi ­dontoptimize, która jest częścią proguard-android.txt. falsetrue Aby uniknąć optymalizacji, możesz w pliku proguardFile wyraźnie określić ­dontoptimize, a także użyć proguard-android-optimize.txt. Jeśli to możliwe, usuń z tego pliku flagę ­dontoptimize, ponieważ zmniejsza ona korzyści z optymalizacji R8. Jeśli nie chcesz tego robić, zrezygnuj z tej opcji, ustawiając android.r8.globalOptionsInConsumerRules.disallowed=false.
android.r8.globalOptionsInConsumerRules.disallowed Od wtyczki AGP 9.0 publikowanie biblioteki Androida i modułu funkcji zakończy się niepowodzeniem, jeśli pliki keep dla konsumenta będą zawierać problematyczne konfiguracje Proguard. Pliki keep dla konsumentów, które zawierają opcje globalne, takie jak ­dontoptimize lub ­dontobfuscate, powinny być używane tylko w modułach aplikacji i mogą ograniczać korzyści z optymalizacji dla użytkowników biblioteki. Kompilacja modułu aplikacji na Androida będzie cicho ignorować takie opcje globalne, jeśli są one osadzone w wcześniej skompilowanej zależności (JAR lub AAR). Możesz sprawdzić, kiedy to nastąpi, przeglądając plik configuration.txt (zwykle w ścieżce takiej jak <app_module>/build/outputs/mapping/<build_variant>/configuration.txt) pod kątem komentarzy takich jak: # REMOVED CONSUMER RULE: ­dontoptimize falsetrue W opublikowanych bibliotekach należy usunąć wszystkie niezgodne reguły. Biblioteki wewnętrzne powinny przenosić wszelkie niezgodne, ale wymagane reguły do pliku proguardFile w module aplikacji. Zrezygnuj, ustawiając android.r8.globalOptionsInConsumerRules.disallowed=false. Gdy wszystkie pliki konsumenckie będą zgodne, wycofaj rezygnację.
android.sourceset.disallowProvider Zabraniaj przekazywania dostawców wygenerowanym źródłom za pomocą DSL AndroidSourceSet. falsetrue Użyj interfejsu API Sources na androidComponents, aby zarejestrować wygenerowane źródła.
android.custom.shader.path.required Wymaga jawnego ustawienia ścieżki kompilatora cieniowania w local.properties, jeśli kompilacja cieniowania jest włączona. falsetrue Dodaj glslc.dir=/path/to/shader-tools do projektulocal.properties.

Usunięte funkcje

Wtyczka Androida do obsługi Gradle w wersji 9.0 usuwa te funkcje:

  • Obsługa umieszczonych aplikacji na Wear OS
    AGP 9.0 usuwa obsługę umieszczania aplikacji na Wear OS, która nie jest już obsługiwana w Google Play. Obejmuje to usunięcie konfiguracji wearAppAndroidSourceSet.wearAppConfigurationName DSL. Więcej informacji o publikowaniu aplikacji na Wear OS znajdziesz w artykule Dystrybucja aplikacji na Wear OS.
  • androidDependenciessourceSets zgłosić zadanie
  • Obsługa pakietów APK podzielonych według gęstości ekranu
    AGP 9.0 usuwa obsługę tworzenia pakietów APK podzielonych według gęstości ekranu. Funkcja i powiązane z nią interfejsy API zostały usunięte. Aby podzielić pliki APK na podstawie gęstości ekranu za pomocą AGP 9.0 lub nowszego, użyj pakietów aplikacji.

Zmieniony DSL

Wtyczka Androida do obsługi Gradle w wersji 9.0 wprowadza te zmiany powodujące niezgodność w języku DSL:

  • Parametryzacja funkcji CommonExtension została usunięta.

    Sama w sobie jest to tylko zmiana powodująca niezgodność na poziomie źródła, która ma pomóc uniknąć takich zmian w przyszłości. Oznacza to jednak również, że metody blokowania muszą zostać przeniesione z CommonExtension do ApplicationExtension, LibraryExtension, DynamicFeatureExtensionTestExtension.

    Podczas uaktualniania projektu do AGP 9.0 zmień kod wtyczki Gradle, który korzysta z tych parametrów lub metod blokowych. Na przykład ten wtyczka została zaktualizowana, aby usunąć parametr typu i nie korzystać z usuniętych metod blokowania:

    AGP 8.13

    val commonExtension: CommonExtension<*, *, *, *, *, *> =
            extensions.getByType(CommonExtension::class)
    commonExtension.apply {
        defaultConfig {
            minSdk {
                version = release(28)
            }
        }
    }
    

    AGP 9.0

    val commonExtension: CommonExtension =
            extensions.getByType(CommonExtension::class)
    commonExtension.apply {
        defaultConfig.apply {
            minSdk {
                version = release(28)
            }
        }
    }
    

    W przypadku wtyczek, które są przeznaczone dla zakresu wersji AGP, bezpośrednie użycie metody pobierającej jest binarne zgodne z wersjami AGP starszymi niż 9.0.

Usunięto DSL

Wtyczka Androida do obsługi Gradle w wersji 9.0 usuwa:

Usunięte interfejsy API

Wtyczka Androida do obsługi Gradle w wersji 9.0 usuwa:

Usunięte właściwości Gradle

Poniższe właściwości Gradle zostały początkowo dodane jako sposoby globalnego wyłączania funkcji, które były domyślnie włączone.

Te funkcje są domyślnie wyłączone od wersji AGP 8.0 lub starszej. Włącz te funkcje tylko w podprojektach, które ich używają, aby zwiększyć wydajność kompilacji.

Właściwość Funkcja Wymiana
android.defaults.buildfeatures.aidl Umożliwia kompilację AIDL we wszystkich podprojektach. Włącz kompilację AIDL tylko w podprojektach, w których znajdują się źródła AIDL, ustawiając w plikach kompilacji Gradle tych projektów tę właściwość:
android {
  buildFeatures {
    aidl = true
  }
}
w pliku kompilacji Gradle każdego podprojektu zawierającego źródła AIDL.
android.defaults.buildfeatures.renderscript Włącza kompilację RenderScript we wszystkich podprojektach. Włącz kompilację RenderScriptu tylko w podprojektach, w których znajdują się źródła RenderScriptu, ustawiając w plikach kompilacji Gradle tych projektów tę właściwość:
android {
  buildFeatures {
    renderScript = true
  }
}

Wymuszane właściwości Gradle

Wtyczka Androida do obsługi Gradle 9.0 zgłasza błąd, jeśli ustawisz te właściwości Gradle.

Asystent uaktualniania wtyczki Androida do obsługi Gradle nie uaktualni projektów do wersji 9.0 wtyczki AGP, które korzystają z tych właściwości.

Właściwość Funkcja
android.r8.integratedResourceShrinking Zmniejszanie rozmiaru zasobów jest teraz zawsze przeprowadzane w ramach R8, a poprzednia implementacja została usunięta.
android.enableNewResourceShrinker.preciseShrinking Zmniejszanie zasobów zawsze korzysta teraz z precyzyjnego zmniejszania zasobów, co umożliwia usunięcie większej liczby zasobów.

Rozwiązane problemy

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-rc02

Rozwiązane problemy
W AGP 9.0.0-rc02 nie oznaczono żadnych publicznych problemów jako naprawionych

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-rc01

Rozwiązane problemy
W AGP 9.0.0-rc01 nie oznaczono żadnych publicznych problemów jako naprawionych

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-beta05

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Wbudowana obsługa języka Kotlin w AGP nie powinna być synchronizowana z zestawami źródeł Kotlin.

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-beta04

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Wbudowana obsługa języka Kotlin w AGP nie powinna być synchronizowana z zestawami źródeł Kotlin.
missingDimensionStrategy preferuje wersję pasującą do własnej nazwy, nawet jeśli pochodzi ona z niepowiązanego wymiaru.

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-beta03

Rozwiązane problemy
W AGP 9.0.0-beta03 nie oznaczono żadnych publicznych problemów jako naprawionych

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-beta02

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Propozycja funkcji: wstrzykiwanie idealnej wersji AGP jako właściwości
Stabilize SingleArtifact.VERSION_CONTROL_INFO_FILE
androidTest connectedCheck logcat output is broken
Linter
AGP 8.11.0: zadanie lintAnalyzeRelease ulega awarii podczas stosowania plików .gradle.kts z funkcją apply(from = "...").
Integracja z linterem
Brakujące wpisy w pamięci podręcznej AndroidLintAnalysisTask w przypadku różnych dostawców JDK lub wersji podrzędnych z powodu różnic w systemPropertyInputs.javaVersion

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-beta01

Rozwiązane problemy
W AGP 9.0.0-beta01 nie oznaczono żadnych publicznych problemów jako naprawionych

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha14

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Wbudowana obsługa języka Kotlin w AGP nie powinna być synchronizowana z zestawami źródeł Kotlin.
Nie udało się opublikować biblioteki Androida, ponieważ plik zachowywania konsumenta zawiera -dontobfuscate
Brak opcji drukowania mapowania zoptymalizowanych zasobów
Wywoływanie funkcji finalizeDsl po zakończeniu tej fazy powinno powodować błąd.
AGP inicjuje konfigurację Jetifiera nawet wtedy, gdy jest on wyłączony
Wbudowany język Kotlin nie dodaje biblioteki kotlinStdlib jako zależności czasu kompilacji, gdy w plikach modułu i pom.xml wartość `kotlin.stdlib.default.dependency` to „true”.
Integracja z linterem
Lint automatycznie używa najnowszego zainstalowanego pakietu SDK pomimo compileSdk, nie rejestruje się jako dane wejściowe zadania i przerywa buforowanie
Shrinker (R8)
Optymalizacja zasobów R8 nie działa, jeśli używane są końcowe identyfikatory zasobów

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha13

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
AGP9: `variant.sources.kotlin!!.addGeneratedSourceDirectory()` nie działa
Sprawdzanie metadanych pliku AAR w przypadku kompilowania pakietu SDK korzysta ze starego języka DSL
Usunięcie wycofanej właściwości `com.android.build.api.dsl.ManagedDevices.devices`

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha12

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Projekt Pure Java ma zależność od biblioteki standardowej Kotlin.
Usuwanie wycofanych właściwości KotlinMultiplatformAndroidCompilationBuilder we wtyczce Androida do obsługi Gradle 9.0
`com.android.tools.build:gradle:9.0.0-alpha05` powinien mieć zależność API od KGP i gradle-api
Zmiana nazwy wtyczki Gradle com.android.experimental.built-in-kotlin

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha11

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Built-in-kotlin nie publikuje ograniczenia zależności kotlin-stdlib w pliku pom.xml Maven
Dodawanie elementu testowania rozbieżności między compileSdk a targetSdk
pusta wartość resConfigs powoduje niejasny błąd aapt

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha10

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
extractNativeLibs i useEmbeddedDex nie powinny pochodzić z manifestu
Ostrzeżenia z R8 w AGP 9.0.0-alpha09
Linter
Wbudowany język Kotlin nie dodaje pliku .kotlin_module do folderu META-INF
Ścieżka klas zawiera zduplikowane klasy w różnych wersjach
Obejście problemu z zastępowaniem zasobów prywatnych nie działa (tools:override = "true")

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha09

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Wtyczka `legacy-kapt` pomija przetwarzanie adnotacji w przeciwieństwie do wtyczki `kotlin-kapt`.
compileSdkSpec.minorApiLevel nie działa z SettingsExtension
[fused lib - public] Wygenerowana biblioteka scalona nie zawiera źródeł

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha08

Rozwiązane problemy
W AGP 9.0.0-alpha08 nie oznaczono żadnych publicznych problemów jako naprawionych

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha07

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Kompilacja nie powiedzie się, jeśli istnieją zadania generowania kodu
Jeśli używasz wtyczki `kotlin-android` z ustawieniami `android.builtInKotlin=false`, `android.newDsl=false` i `android.enableLegacyVariantApi=false`, wystąpi błąd „API 'applicationVariants' is obsolete” (API „applicationVariants” jest przestarzały).
Wbudowany język Kotlin nie może rozpoznać biblioteki kotlin-stdlib bez wersji, gdy kotlin.stdlib.default.dependency=false
DexData otwiera plik bez zamykania, co uniemożliwia czyszczenie
Wtyczka Androida do obsługi Gradle 9.0 nie powinna już rozszerzać klasy AndroidSourceDirectorySet
Błąd testu w modułach tylko do testowania
Nieprawidłowy błąd podczas używania odbiorników kontekstu w elementach testowania
Nieprawidłowe błędy IDE w przypadku kodu Kotlin w testFixtures

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha06

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Nowy język DSL optymalizacji domyślnie nie tworzy pliku configuration.txt
AGP 8.13.0 nie weryfikuje wykresu nawigacji w module
AGP używa wycofanego interfejsu Gradle API: notacja wielociągowa
Ostrzeganie użytkowników, którzy próbują używać starszej biblioteki multidex z parametrem minSdkVersion >=21
Linter
Sprawdzanie Lint ChecksSdkIntAtLeast nie sprawdza, czy adnotowana wartość jest prawidłowa

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha05

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
android.proguard.failOnMissingFiles nie działa w przypadku consumerProguardFiles
Zaktualizuj zależność wtyczki Gradle do obsługi języka Kotlin do wersji 2.2.10
Tworzenie obiektu KotlinJvmAndroidCompilation za pomocą interfejsu KGP API
Tryb jawnego interfejsu API Kotlin zastosowany do źródeł testowych
Linter
Lintowanie zwraca ostrzeżenie „Nie udało się wyczyścić pamięci podręcznej K2”

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha04

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Zmiana domyślnej wersji źródłowej/docelowej języka Java z Java 8 na Java 11 w AGP 9.0
Przełącz domyślną wartość android.useAndroidX na true
Lepszy wyjątek podczas stosowania wtyczki kapt z wbudowanym językiem Kotlin.
Linter
Lintowanie zwraca ostrzeżenie „Nie udało się wyczyścić pamięci podręcznej K2”

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha03

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Gdy opcja „isIncludeAndroidResources” jest włączona, zadanie „process{Variant}UnitTestManifest” nie może scalić użycia narzędzia tools:overrideLibrary w AGP 8.12.0
Wtyczka Androida do obsługi Gradle powoduje ostrzeżenia o wycofaniu w Gradle w przypadku zadań testowych JVM
Zadanie DependencyReportTask jest niezgodne z pamięcią podręczną konfiguracji
Linter
Błąd: usunięcie nieużywanych zasobów nie powoduje usunięcia ich tłumaczeń ani nie wyświetla pytania o to, czy je usunąć.

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha02

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Niepowodzenie kompilacji, gdy plik ProGuard nie istnieje
usuń domyślne flagi buildconfig gradle.properties
Zmiana domyślnej wartości targetSdk aplikacji na podstawie compileSdk zamiast minSdk

Wtyczka Androida do obsługi Gradle w wersji 9.0.0-alpha01

Rozwiązane problemy
Wtyczka Androida do obsługi Gradle
Usunięcie wycofanego elementu AndroidSourceSet.jni w AGP 9.0
Usunięcie funkcji Installation.installOptions() we wtyczce Androida do obsługi Gradle 9.0
Usuń BuildType.isRenderscriptDebuggable w AGP 9.0.
Usuwanie android.defaults.buildfeatures.renderscript
`com.android.kotlin.multiplatform.library` ulega awarii na urządzeniach zarządzanych przez Gradle
Usuwanie domyślnych flag `android.defaults.buildfeatures.aidl` w pliku gradle.properties