Notes de version de l'aperçu du plug-in Android Gradle

Cette page contient les notes de version des versions Preview du plug-in Android Gradle (AGP).

Plug-in Android Gradle 9.0

Le plug-in Android Gradle 9.0 est une nouvelle version majeure d'AGP qui apporte des modifications à l'API et au comportement.

Pour passer au plug-in Android Gradle 9.0.0-beta04, utilisez l'assistant de mise à niveau du plug-in Android Gradle dans Android Studio Otter 3 Feature Drop | 2025.2.3.

L'assistant de mise à niveau AGP vous aide à préserver les comportements existants lors de la mise à niveau de votre projet, le cas échéant. Vous pouvez ainsi mettre à niveau votre projet pour utiliser AGP 9.0, même si vous n'êtes pas prêt à adopter toutes les nouvelles valeurs par défaut d'AGP 9.0.

Compatibilité

Le niveau d'API Android maximal compatible avec le plug-in Android Gradle 9.0.0-beta04 est le niveau d'API 36.

Le plug-in Android Gradle 9.0.0-beta04 nécessite Gradle 9.0.0.

Version minimale Version par défaut Notes
Gradle 9.1.0 9.1.0 Pour en savoir plus, consultez Mettre à jour Gradle.
Build Tools SDK 36.0.0 36.0.0 Installez ou configurez SDK Build Tools.
NDK N/A 28.2.13676358 Installez ou configurez une autre version du NDK.
JDK 17 17 Pour en savoir plus, consultez Définir la version du JDK.

Les classes DSL android n'implémentent désormais que les nouvelles interfaces publiques.

Au cours des dernières années, nous avons introduit de nouvelles interfaces pour notre DSL et notre API afin de mieux contrôler les API publiques. Les versions 7.x et 8.x d'AGP utilisaient encore les anciens types DSL (par exemple, BaseExtension), qui implémentaient également les nouvelles interfaces publiques, afin de maintenir la compatibilité à mesure que les interfaces étaient développées.

AGP 9.0 utilise exclusivement nos nouvelles interfaces DSL, et les implémentations ont été remplacées par de nouveaux types entièrement masqués. Cela supprime également l'accès à l'ancienne API Variant obsolète.

Pour passer à AGP 9.0, vous devrez peut-être effectuer les opérations suivantes :

  • Assurez-vous que votre projet est compatible avec Kotlin intégré : le plug-in org.jetbrains.kotlin.android n'est pas compatible avec le nouveau DSL.
  • Migrez les projets KMP vers le plug-in Android Gradle Library pour KMP : l'utilisation du plug-in org.jetbrains.kotlin.multiplatform dans le même sous-projet Gradle que les plug-ins com.android.library et com.android.application n'est pas compatible avec le nouveau DSL.

  • Mettez à jour vos fichiers de compilation : bien que le changement d'interfaces soit destiné à maintenir le DSL aussi similaire que possible, il peut y avoir quelques petites modifications.

  • Mettez à jour votre logique de compilation personnalisée pour référencer le nouveau DSL et la nouvelle API : remplacez toutes les références au DSL interne par les interfaces DSL publiques. Dans la plupart des cas, il s'agit d'un remplacement à l'identique. Remplacez toute utilisation de l'API applicationVariants et des API similaires par la nouvelle API androidComponents. Cela peut être plus complexe, car l'API androidComponents est conçue pour être plus stable afin de maintenir la compatibilité des plug-ins plus longtemps. Pour obtenir des exemples, consultez nos recettes Gradle.

  • Mettez à jour les plug-ins tiers : certains plug-ins tiers peuvent encore dépendre d'interfaces ou d'API qui ne sont plus exposées. Migrez vers des versions de ces plug-ins compatibles avec AGP 9.0.

Le passage aux nouvelles interfaces DSL empêche les plug-ins et les scripts de compilation Gradle d'utiliser diverses API obsolètes, y compris :

API obsolète dans le bloc android Fonction Remplacement
applicationVariants,
libraryVariants,
testVariants et
unitTestVariants
Points d'extension permettant aux plug-ins d'ajouter de nouvelles fonctionnalités à AGP. Remplacez-le par l'API androidComponents.onVariants, par exemple :
androidComponents {
    onVariants() { variant ->
        variant.signingConfig
            .enableV1Signing.set(false)
    }
}
Il est possible que toutes les anciennes API ne puissent pas être remplacées directement. Signalez un problème si un cas d'utilisation n'est pas couvert par les nouvelles API de variantes.
variantFilter Permet de désactiver les variantes sélectionnées. Remplacez-le par l'API androidComponents.beforeVariants, par exemple :
androidComponents {
    beforeVariants(
        selector()
            .withBuildType("debug")
            .withFlavor("color", "blue")
    ) { variantBuilder ->
        variantBuilder.enable = false
    }
  }
deviceProvider et
testServer
Enregistrement d'environnements de test personnalisés pour exécuter des tests sur des appareils et des émulateurs Android. Passez aux appareils gérés par Gradle.
sdkDirectory,
ndkDirectory,
bootClasspath,
adbExecutable et
adbExe
Utiliser différents composants du SDK Android pour des tâches personnalisées. Passez à androidComponents.sdkComponents.
registerArtifactType,
registerBuildTypeSourceProvider,
registerProductFlavorSourceProvider,
registerJavaArtifact,
registerMultiFlavorSourceProvider et
wrapJavaSourceSet
Fonctionnalité obsolète principalement liée à la gestion des sources générées dans Android Studio, qui ne fonctionnait plus dans AGP 7.2.0. Ces API ne peuvent pas être remplacées directement.
dexOptions Paramètres obsolètes liés à l'outil dx, qui a été remplacé par d8. Aucun des paramètres n'a eu d'effet depuis le plug-in Android Gradle 7.0. Il n'existe pas de remplacement direct.
generatePureSplits Générez des splits de configuration pour les applis instantanées. La possibilité de distribuer des configurations fractionnées est désormais intégrée aux Android App Bundles.
aidlPackagedList Fichiers AIDL à inclure dans l'AAR pour l'exposer en tant qu'API pour les bibliothèques et les applications qui dépendent de cette bibliothèque. Cette fonctionnalité est toujours exposée sur LibraryExtension mais pas sur les autres types d'extensions.

Si vous passez à AGP 9.0 et que le message d'erreur suivant s'affiche, cela signifie que votre projet fait toujours référence à certains des anciens types :

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

Si vous êtes bloqué par des plug-ins tiers incompatibles, vous pouvez désactiver les nouvelles implémentations et revenir aux anciennes pour le DSL et l'ancienne API de variante. Pendant ce temps, les nouvelles interfaces sont également disponibles et vous pouvez toujours mettre à jour votre propre logique de compilation vers la nouvelle API. Pour désactiver le cookie, ajoutez la ligne suivante à votre fichier gradle.properties :

android.newDsl=false

Vous pouvez également commencer à migrer vers les nouvelles API avant de passer à AGP 9.0. Les nouvelles interfaces sont présentes depuis de nombreuses versions d'AGP. Vous pouvez donc avoir un mélange d'anciennes et de nouvelles interfaces. La documentation de référence de l'API AGP présente la surface de l'API pour chaque version d'AGP, ainsi que la date d'ajout de chaque classe, méthode et champ.

Au cours de la phase alpha 9.0, nous contacterons les auteurs de plug-ins pour les aider à adapter et à publier des plug-ins entièrement compatibles avec les nouveaux modes. Nous améliorerons également l'assistant de mise à niveau AGP dans Android Studio pour vous guider tout au long de la migration.

Si vous constatez que le nouveau DSL ou l'API Variant manquent de fonctionnalités, veuillez signaler un problème dès que possible.

Kotlin intégré

Le plug-in Android Gradle 9.0 introduit la prise en charge intégrée de Kotlin et l'active par défaut. Cela signifie que vous n'avez plus besoin d'appliquer le plug-in org.jetbrains.kotlin.android (ou kotlin-android) dans vos fichiers de compilation pour compiler les fichiers sources Kotlin. Cela simplifie l'intégration de Kotlin avec AGP, évite l'utilisation d'API obsolètes et améliore les performances dans certains cas.

Par conséquent, lorsque vous mettez à niveau votre projet vers AGP 9.0, vous devez également migrer vers Kotlin intégré ou désactiver cette fonctionnalité.

Vous pouvez également désactiver sélectivement la prise en charge intégrée de Kotlin pour les sous-projets Gradle qui ne comportent pas de sources Kotlin.

Dépendance d'exécution sur le plug-in Gradle de Kotlin

Pour fournir une prise en charge intégrée de Kotlin, le plug-in Android Gradle 9.0 dispose désormais d'une dépendance d'exécution sur le plug-in Kotlin Gradle (KGP) 2.2.10. Cela signifie que vous n'avez plus besoin de déclarer une version KGP. Si vous utilisez une version KGP antérieure à 2.2.10, Gradle mettra automatiquement à niveau votre version KGP vers la version 2.2.10. De même, si vous utilisez une version KSP antérieure à 2.2.10-2.0.2, AGP la mettra à niveau vers la version 2.2.10-2.0.2 pour qu'elle corresponde à la version KGP.

Passer à une version KGP supérieure

Pour utiliser une version supérieure de KGP ou KSP, ajoutez ce qui suit à votre fichier de compilation de premier niveau :

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")
    }
}

Revenir à une version KGP antérieure

Vous ne pouvez rétrograder la version de KGP que si vous avez désactivé Kotlin intégré. En effet, AGP 9.0 active Kotlin intégré par défaut, et Kotlin intégré nécessite KGP 2.2.10 ou version ultérieure.

Pour utiliser une version antérieure de KGP ou KSP, déclarez cette version dans votre fichier de compilation de premier niveau à l'aide d'une déclaration de version stricte :

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") }
        }
    }
}

Notez que la version minimale de KGP à laquelle vous pouvez revenir est la version 2.0.0.

Compatibilité des IDE avec les outils de test

AGP 9.0 est entièrement compatible avec l'IDE Android Studio pour les fixtures de test.

Plug-in de la bibliothèque fusionnée

Le plug-in Fused Library (Preview) vous permet de publier plusieurs bibliothèques sous forme d'un seul fichier AAR de bibliothèque Android. Cela peut permettre à vos utilisateurs de s'appuyer plus facilement sur vos artefacts publiés.

Pour savoir comment vous lancer, consultez Publier plusieurs bibliothèques Android en une seule avec la bibliothèque fusionnée.

Changements de comportement

Le plug-in Android Gradle 9.0 présente les nouveaux comportements suivants :

Comportement Recommandation
Le plug-in Android Gradle 9.0 utilise la version r28c du NDK par défaut. Envisagez de spécifier explicitement la version du NDK que vous souhaitez utiliser.
Par défaut, le plug-in Android Gradle 9.0 exige que les consommateurs d'une bibliothèque utilisent la même version du SDK de compilation ou une version ultérieure. Utilisez le même SDK de compilation ou un SDK de compilation plus récent lorsque vous consommez une bibliothèque. Si cela n'est pas possible ou si vous souhaitez donner plus de temps aux consommateurs d'une bibliothèque que vous publiez pour changer, définissez explicitement AarMetadata.minCompileSdk.

AGP 9.0 inclut des mises à jour des valeurs par défaut des propriétés Gradle suivantes. Vous avez ainsi le choix de conserver le comportement de l'AGP 8.13 lors de la mise à niveau :

Propriété Fonction Passer d'AGP 8.13 à AGP 9.0 Recommandation
android.newDsl Utilisez les nouvelles interfaces DSL sans exposer les anciennes implémentations du bloc android.
Cela signifie également que l'ancienne API des variantes, telle que android.applicationVariants n'est plus accessible.
falsetrue Vous pouvez désactiver cette option en définissant android.newDsl=false.
Une fois que tous les plug-ins et la logique de compilation utilisés par votre projet sont compatibles, supprimez la désactivation.
android.builtInKotlin Active Kotlin intégré falsetrue Migrez vers Kotlin intégré si vous le pouvez ou désactivez-le.
android.uniquePackageNames Applique le fait que chaque bibliothèque possède un nom de package distinct. falsetrue Spécifiez des noms de packages uniques pour toutes les bibliothèques de votre projet. Si ce n'est pas possible, vous pouvez désactiver ce signal pendant la migration.
android.useAndroidx Utilisez les dépendances androidx par défaut. falsetrue Adoptez les dépendances androidx.
android.default.androidx.test.runner Exécutez des tests sur l'appareil avec la classe androidx.test.runner.AndroidJUnitRunner par défaut, en remplaçant la valeur par défaut de la classe InstrumentationTestRunner obsolète par
android {
  defaultConfig {
    testInstrumentationRunner = "..."
  }
}
falsetrue Adoptez AndroidJUnitRunner, ou spécifiez explicitement votre testInstrumentationRunner personnalisé.
android.dependency.useConstraints Contrôle l'utilisation des contraintes de dépendance entre les configurations.
La valeur par défaut dans AGP 9.0 est false, qui n'utilise que des contraintes dans les tests d'application sur l'appareil (AndroidTest). Si vous définissez cette valeur sur true, vous rétablirez le comportement de la version 8.13.
truefalse N'utilisez pas de contraintes de dépendance partout, sauf si vous en avez besoin. Accepter la nouvelle valeur par défaut de cet indicateur permet également d'activer les optimisations du processus d'importation de projet, ce qui devrait réduire le temps d'importation des builds comportant de nombreux sous-projets de bibliothèque Android.
android.enableAppCompileTimeRClass Compiler le code dans les applications par rapport à une classe R non finale, ce qui permet d'aligner la compilation des applications sur celle des bibliothèques.
Cela améliore l'incrémentalité et ouvre la voie à de futures optimisations des performances du flux de traitement des ressources.
falsetrue De nombreux projets peuvent simplement adopter le nouveau comportement sans modifier le code source. Si les champs de la classe R sont utilisés dans un emplacement nécessitant une constante, comme des cas de switch, refactorisez-les pour utiliser des instructions if chaînées.
android.sdk.defaultTargetSdkToCompileSdkIfUnset Utilise la version du SDK de compilation comme valeur par défaut pour la version du SDK cible dans les applications et les tests.
Avant cette modification, la version du SDK cible était définie par défaut sur la version minimale du SDK.
falsetrue Spécifiez explicitement la version du SDK cible pour les applications et les tests.
android.onlyEnableUnitTestForTheTestedBuildType Ne crée que des composants de test unitaire pour le type de compilation testé.
Dans le projet par défaut, cela se traduit par un seul test unitaire pour le débogage, alors que le comportement précédent consistait à exécuter des tests unitaires pour le débogage ou la version.
falsetrue Si votre projet n'exige pas l'exécution de tests pour le débogage et la version Release, aucune modification n'est requise.
android.proguard.failOnMissingFiles Échec de la compilation avec une erreur si l'un des fichiers de conservation spécifiés dans le DSL AGP n'existe pas sur le disque. Avant cette modification, les fautes de frappe dans les noms de fichiers entraînaient l'ignorance silencieuse des fichiers. falsetrue Supprimez toutes les déclarations de fichiers ProGuard non valides.
android.r8.optimizedResourceShrinking Permet à R8 de conserver moins de ressources Android en considérant les classes et les ressources Android ensemble. falsetrue Si les règles de conservation de votre projet sont déjà complètes, aucune modification n'est requise.
android.r8.strictFullModeForKeepRules Permet à R8 de conserver moins d'éléments en ne conservant pas implicitement le constructeur par défaut lorsqu'une classe est conservée. En d'autres termes, -keep class A n'implique plus -keep class A { <init>(); }
.
falsetrue Si les règles de conservation de votre projet sont déjà complètes, aucune modification n'est requise.

Remplacez -keep class A par -keep class A { <init>(); } dans les règles de conservation de votre projet pour tous les cas où vous avez besoin que le constructeur par défaut soit conservé.
android.defaults.buildfeatures.resvalues Active resValues dans tous les sous-projets truefalse Activez resValues uniquement dans les sous-projets qui en ont besoin en définissant les éléments suivants dans les fichiers de compilation Gradle de ces projets :
android {
  buildFeatures {
    resValues = true
  }
}
android.defaults.buildfeatures.shaders Active la compilation des nuanceurs dans tous les sous-projets. truefalse Activez la compilation des nuanceurs uniquement dans les sous-projets qui contiennent des nuanceurs à compiler en définissant les éléments suivants dans les fichiers de compilation Gradle de ces projets :
android {
  buildFeatures {
    shaders = true
  }
}
android.r8.proguardAndroidTxt.disallowed Dans AGP 9.0, getDefaultProguardFile() ne sera compatible qu'avec proguard-android-optimize.txt et non avec proguard-android.txt. Cela permet d'éviter l'utilisation accidentelle de l'indicateur ­dontoptimize, qui est inclus dans proguard-android.txt. falsetrue Vous pouvez spécifier explicitement ­dontoptimize dans un fichier ProGuard personnalisé si vous souhaitez éviter l'optimisation, en plus d'utiliser proguard-android-optimize.txt. Si possible, veillez à supprimer l'indicateur ­dontoptimize de ce fichier, car il réduit les avantages de l'optimisation R8. Sinon, désactivez-le en définissant android.r8.globalOptionsInConsumerRules.disallowed=false.
android.r8.globalOptionsInConsumerRules.disallowed À partir d'AGP 9.0, la publication de modules de bibliothèque et de fonctionnalités Android échouera si les fichiers de conservation du consommateur contiennent des configurations Proguard problématiques. Les fichiers de conservation des consommateurs qui incluent des options globales telles que ­dontoptimize ou ­dontobfuscate ne doivent être utilisés que dans les modules d'application et peuvent réduire les avantages de l'optimisation pour les utilisateurs de la bibliothèque. La compilation du module d'application Android ignorera silencieusement toutes ces options globales si elles sont intégrées dans une dépendance précompilée (JAR ou AAR). Pour savoir quand cela se produit, consultez le fichier configuration.txt (généralement dans un chemin d'accès tel que <app_module>/build/outputs/mapping/<build_variant>/configuration.txt) et recherchez des commentaires tels que : # REMOVED CONSUMER RULE: ­dontoptimize falsetrue Les bibliothèques publiées doivent supprimer toutes les règles incompatibles. Les bibliothèques internes doivent déplacer les règles incompatibles, mais requises, vers un fichier ProGuard dans un module d'application. Désactivez-le en définissant android.r8.globalOptionsInConsumerRules.disallowed=false. Une fois que tous vos fichiers conservés sont compatibles, désactivez la désactivation.
android.sourceset.disallowProvider Interdire le transfert de fournisseurs pour les sources générées à l'aide du DSL AndroidSourceSet. falsetrue Utilisez l'API Sources sur androidComponents pour enregistrer les sources générées.
android.custom.shader.path.required Nécessite que le chemin d'accès au compilateur de nuanceurs soit explicitement défini dans local.properties si la compilation de nuanceurs est activée. falsetrue Ajoutez glslc.dir=/path/to/shader-tools au fichier local.properties de votre projet.

Fonctionnalités supprimées

Le plug-in Android Gradle 9.0 supprime les fonctionnalités suivantes :

  • Compatibilité avec les applications Wear OS intégrées
    AGP 9.0 supprime la compatibilité avec l'intégration des applications Wear OS, qui n'est plus prise en charge dans Play. Cela inclut la suppression des configurations wearApp et du DSL AndroidSourceSet.wearAppConfigurationName. Pour savoir comment publier votre application sur Wear OS, consultez Distribuer votre application sur Wear OS.
  • Tâche de création de rapports androidDependencies et sourceSets
  • Prise en charge des APK divisés en fonction de la densité
    AGP 9.0 ne permet plus de créer des APK divisés en fonction de la densité de l'écran. La fonctionnalité et les API associées ont été supprimées. Pour fractionner les APK en fonction de la densité d'écran à l'aide d'AGP 9.0 ou version ultérieure, utilisez les app bundles.

DSL modifié

Le plug-in Android Gradle 9.0 présente les modifications importantes suivantes dans le DSL :

  • La paramétrisation de CommonExtension a été supprimée.

    En soi, il s'agit uniquement d'un changement cassant au niveau de la source pour éviter de futurs changements cassants au niveau de la source, mais cela signifie également que les méthodes de blocage doivent passer de CommonExtension à ApplicationExtension, LibraryExtension, DynamicFeatureExtension et TestExtension.

    Lorsque vous mettez à niveau votre projet vers AGP 9.0, refactorisez le code du plug-in Gradle qui utilise ces paramètres ou les méthodes de bloc. Par exemple, le plug-in suivant est mis à jour pour supprimer le paramètre de type et ne pas s'appuyer sur les méthodes de bloc supprimées :

    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)
            }
        }
    }
    

    Pour les plug-ins qui ciblent une plage de versions AGP, l'utilisation directe du getter est compatible au niveau binaire avec les versions AGP antérieures à 9.0.

DSL supprimée

Le plug-in Android Gradle 9.0 supprime les éléments suivants :

API supprimées

Le plug-in Android Gradle 9.0 supprime les éléments suivants :

Propriétés Gradle supprimées

Les propriétés Gradle suivantes ont été ajoutées à l'origine pour désactiver globalement les fonctionnalités activées par défaut.

Ces fonctionnalités sont désactivées par défaut depuis AGP 8.0 ou version antérieure. Activez ces fonctionnalités uniquement dans les sous-projets qui les utilisent pour une compilation plus efficace.

Propriété Fonction Remplacement
android.defaults.buildfeatures.aidl Active la compilation AIDL dans tous les sous-projets. Activez la compilation AIDL uniquement dans les sous-projets où se trouvent des sources AIDL en définissant la propriété suivante dans les fichiers de compilation Gradle de ces projets :
android {
  buildFeatures {
    aidl = true
  }
}
dans le fichier de compilation Gradle de chaque sous-projet contenant des sources AIDL
android.defaults.buildfeatures.renderscript Active la compilation RenderScript dans tous les sous-projets. Activez la compilation Renderscript uniquement dans les sous-projets où se trouvent des sources Renderscript en définissant la propriété suivante dans les fichiers de compilation Gradle de ces projets :
android {
  buildFeatures {
    renderScript = true
  }
}

Propriétés Gradle appliquées

AGP 9.0 génère une erreur si vous définissez les propriétés Gradle suivantes.

L'assistant de mise à niveau du plug-in Android Gradle ne mettra pas à niveau les projets vers AGP 9.0 qui utilisent ces propriétés.

Propriété Fonction
android.r8.integratedResourceShrinking La réduction des ressources est désormais toujours exécutée dans le cadre de R8. L'implémentation précédente a été supprimée.
android.enableNewResourceShrinker.preciseShrinking La réduction des ressources utilise désormais toujours la réduction précise des ressources, ce qui permet de supprimer davantage d'éléments.

Problèmes résolus

Plug-in Android Gradle 9.0.0-beta04

Problèmes résolus
Plug-in Android Gradle
La prise en charge intégrée de Kotlin dans AGP ne doit pas se synchroniser avec les ensembles de sources Kotlin.
missingDimensionStrategy préfère un flavor correspondant à son propre nom, même à partir d'une dimension non liée

Plug-in Android Gradle 9.0.0-beta03

Problèmes résolus
Aucun problème public n'a été marqué comme résolu dans AGP 9.0.0-beta03

Plug-in Android Gradle 9.0.0-beta02

Problèmes résolus
Plug-in Android Gradle
Demande de fonctionnalité : injecter la version idéale d'AGP en tant que propriété
Stabiliser SingleArtifact.VERSION_CONTROL_INFO_FILE
La sortie logcat de androidTest connectedCheck est cassée
Lint
AGP 8.11.0 : la tâche lintAnalyzeRelease plante lors de l'application de fichiers .gradle.kts avec apply(from = "...")
Intégration de Lint
AndroidLintAnalysisTask présente des défauts de cache (miss) pour différents fournisseurs de JDK ou versions mineures en raison de différences dans systemPropertyInputs.javaVersion

Plug-in Android Gradle 9.0.0-beta01

Problèmes résolus
Aucun problème public n'a été marqué comme résolu dans AGP 9.0.0-beta01

Plug-in Android Gradle 9.0.0-alpha14

Problèmes résolus
Plug-in Android Gradle
La prise en charge intégrée de Kotlin dans AGP ne doit pas se synchroniser avec les ensembles de sources Kotlin.
Échec de la publication de la bibliothèque Android si le fichier de conservation du consommateur contient -dontobfuscate
Aucune option d'impression du mappage pour les ressources optimisées
Générer une erreur si finalizeDsl est appelé après cette phase
AGP initialise la configuration de Jetifier même lorsque Jetifier est désactivé
built in kotlin does not add kotlinStdlib as a compile time dependency when `kotlin.stdlib.default.dependency` is true to module and pom files
Intégration de Lint
Lint utilise automatiquement le dernier SDK installé malgré compileSdk, ne s'enregistre pas en tant qu'entrée de tâche et interrompt la mise en cache
Réducteur de code (R8)
La réduction des ressources optimisée par R8 échoue silencieusement si des ID de ressources finaux sont utilisés

Plug-in Android Gradle 9.0.0-alpha13

Problèmes résolus
Plug-in Android Gradle
AGP9 : `variant.sources.kotlin!!.addGeneratedSourceDirectory()` ne fonctionne pas
Les vérifications des métadonnées Aar sur le SDK de compilation utilisent l'ancien DSL
Suppression de la propriété obsolète "com.android.build.api.dsl.ManagedDevices.devices"

Plug-in Android Gradle 9.0.0-alpha12

Problèmes résolus
Plug-in Android Gradle
Les projets Java pur dépendent de la bibliothèque standard Kotlin.
Supprimer les propriétés KotlinMultiplatformAndroidCompilationBuilder obsolètes dans AGP 9.0
`com.android.tools.build:gradle:9.0.0-alpha05` doit avoir une dépendance d'API sur KGP et gradle-api
Renommer le plug-in Gradle com.android.experimental.built-in-kotlin

Plug-in Android Gradle 9.0.0-alpha11

Problèmes résolus
Plug-in Android Gradle
Built-in-kotlin ne publie pas de contrainte de dépendance kotlin-stdlib dans le fichier pom Maven
Ajouter un scénario de test pour la divergence entre compileSdk et targetSdk
Une valeur resConfigs vide entraîne une erreur aapt obscure

Plug-in Android Gradle 9.0.0-alpha10

Problèmes résolus
Plug-in Android Gradle
extractNativeLibs et useEmbeddedDex ne doivent pas provenir du fichier manifeste
Avertissements de R8 dans AGP 9.0.0-alpha09
Lint
Kotlin intégré n'ajoute pas .kotlin_module à META-INF
Le chemin de classe Lint contient des classes en double à différentes versions
La solution de contournement pour remplacer les ressources privées ne fonctionne pas (tools:override = "true")

Plug-in Android Gradle 9.0.0-alpha09

Problèmes résolus
Plug-in Android Gradle
Contrairement à `kotlin-kapt`, le plug-in `legacy-kapt` ignore le traitement des annotations.
compileSdkSpec.minorApiLevel ne fonctionne pas avec SettingsExtension
[fused lib - public] La bibliothèque fusionnée générée n'inclut pas les sources

Plug-in Android Gradle 9.0.0-alpha08

Problèmes résolus
Aucun problème public n'a été marqué comme résolu dans AGP 9.0.0-alpha08

Plug-in Android Gradle 9.0.0-alpha07

Problèmes résolus
Plug-in Android Gradle
Échec de la compilation en cas de tâches de génération de code
Avec `android.builtInKotlin=false`, `android.newDsl=false` et `android.enableLegacyVariantApi=false`, l'utilisation du plug-in `kotlin-android` échouera avec le message "L'API 'applicationVariants' est obsolète".
Le Kotlin intégré ne parvient pas à résoudre kotlin-stdlib sans version lorsque kotlin.stdlib.default.dependency=false
DexData ouvre un fichier sans le fermer, ce qui empêche le nettoyage
AndroidSourceDirectorySet ne doit plus étendre PatternFilterable dans AGP 9.0
Erreur de fixture de test dans les modules de test uniquement
Erreur incorrecte lors de l'utilisation de récepteurs de contexte dans les fixtures de test
Erreurs IDE incorrectes pour le code Kotlin dans testFixtures

Plug-in Android Gradle 9.0.0-alpha06

Problèmes résolus
Plug-in Android Gradle
Le nouveau DSL d'optimisation ne crée pas de fichier configuration.txt par défaut
AGP 8.13.0 ne parvient pas à valider le graphique de navigation dans un module
AGP utilise l'API Gradle obsolète : notation multi-chaînes
Avertir les utilisateurs qui tentent d'utiliser l'ancienne bibliothèque multidex avec minSdkVersion >=21
Lint
La vérification Lint ChecksSdkIntAtLeast ne vérifie pas si la valeur annotée est correcte

Plug-in Android Gradle 9.0.0-alpha05

Problèmes résolus
Plug-in Android Gradle
android.proguard.failOnMissingFiles ne fonctionne pas pour consumerProguardFiles
Mise à jour de la dépendance du plug-in Kotlin Gradle vers la version 2.2.10
Créer KotlinJvmAndroidCompilation à l'aide de l'API KGP
Mode API explicite Kotlin appliqué aux sources de test
Lint
Lint génère l'avertissement "Could not clean up K2 caches" (Impossible de nettoyer les caches K2).

Plug-in Android Gradle 9.0.0-alpha04

Problèmes résolus
Plug-in Android Gradle
Passage de la version Java 8 à la version Java 11 par défaut pour la source et la cible dans AGP 9.0
Passer la valeur par défaut de android.useAndroidX à "true"
Meilleure exception lors de l'application du plug-in kapt avec Kotlin intégré.
Lint
Lint génère l'avertissement "Could not clean up K2 caches" (Impossible de nettoyer les caches K2).

Plug-in Android Gradle 9.0.0-alpha03

Problèmes résolus
Plug-in Android Gradle
Lorsque `isIncludeAndroidResources` est activé, `process{Variant}UnitTestManifest` ne parvient pas à fusionner les utilisations de tools:overrideLibrary dans AGP 8.12.0
AGP génère des avertissements d'obsolescence dans Gradle pour les tâches de test JVM
DependencyReportTask incompatible avec le cache de configuration
Lint
Bug : la suppression des ressources inutilisées n'entraîne pas la suppression de leurs traductions et ne demande pas non plus si elles doivent être supprimées

Plug-in Android Gradle 9.0.0-alpha02

Problèmes résolus
Plug-in Android Gradle
Échec de la compilation en l'absence de fichier ProGuard
Supprimer les indicateurs gradle.properties par défaut de BuildConfig
Modifier la valeur par défaut de targetSdk de l'application pour qu'elle soit basée sur compileSdk au lieu de minSdk

Plug-in Android Gradle 9.0.0-alpha01

Problèmes résolus
Plug-in Android Gradle
Supprimer AndroidSourceSet.jni obsolète dans AGP 9.0
Suppression de Installation.installOptions() dans AGP 9.0
Supprimez BuildType.isRenderscriptDebuggable dans AGP 9.0.
Supprimer android.defaults.buildfeatures.renderscript
`com.android.kotlin.multiplatform.library` plante avec les appareils gérés par Gradle
Supprimez les indicateurs gradle.properties par défaut de `android.defaults.buildfeatures.aidl`.