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-alpha04, utilisez l'assistant de mise à niveau du plug-in Android Gradle dans Android Studio Narwhal 4 Feature Drop | 2025.1.4.
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-alpha04 est le niveau d'API 36.
Le plug-in Android Gradle 9.0.0-alpha04 nécessite Gradle 9.0.0.
Version minimale | Version par défaut | Notes | |
---|---|---|---|
Gradle | 9.0.0 | 9.0.0 | Pour en savoir plus, consultez Mettre à jour Gradle. |
Build Tools SDK | 36.0.0 | 36.0.0 | Installez ou configurez des Build Tools SDK. |
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 implémentations DSL internes et l'API Variant obsolète nécessitent désormais une activation explicite
Le plug-in Android Gradle dispose désormais d'une surface d'API définie, avec des API compatibles définies dans l'artefact Maven com.android.tools.build:gradle-api
.
Pour assurer la compatibilité avec les plug-ins binaires et les scripts de compilation existants, les implémentations DSL précédentes qui précèdent la surface d'API définie étaient toujours exposées par défaut dans AGP 8.13 et versions antérieures. Cela permet au code des plug-ins Gradle et des scripts de compilation d'accéder à la fois aux détails d'implémentation internes du DSL et aux API android.applicationVariants
, android.libraryVariants
, android.testVariants
et android.unitTestVariants
obsolètes, qui seront supprimées en 2026 dans AGP 10.
Pour rendre cette transition plus visible, l'ancienne API de variante et le DSL interne ne sont pas accessibles par défaut dans le plug-in Android Gradle 9.0.0-alpha04.
Vous pouvez réactiver l'API obsolète en définissant android.newDsl=false
dans gradle.properties
.
Au cours de la série alpha 9.0, nous contactons 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.
Kotlin intégré
Le plug-in Android Gradle 9 inclut une compatibilité intégrée pour la compilation de Kotlin, ce qui remplace le plug-in Kotlin appliqué séparément. Cela simplifie l'intégration à AGP, en évitant l'utilisation des API obsolètes et en améliorant les performances dans certains cas.
Le plug-in Android Gradle 9 a une dépendance d'exécution sur le plug-in Kotlin Gradle 2.2.0, qui est la version minimale requise pour la prise en charge intégrée de Kotlin.
Vous pouvez désactiver Kotlin intégré en définissant android.builtInKotlin=false
.
Si vous avez désactivé la fonctionnalité et que vous devez également utiliser une ancienne version du plug-in Gradle Kotlin, vous pouvez forcer la rétrogradation.
buildscript {
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
version { strictly("2.0.0") } // or another version that you want to use
}
}
}
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. |
Le plug-in Android Gradle 9.0 exige par défaut 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 effectuer la transition, définissez explicitement AarMetadata.minCompileSdk .
|
AGP 9.0 inclut des mises à jour des valeurs par défaut des propriétés Gradle suivantes. Vous pouvez choisir 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.
|
false → true |
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 |
Prise en charge de la compilation du code Kotlin directement dans le plug-in Android Gradle, sans le plug-in org.jetbrains.kotlin.android .
|
false → true |
Adoptez Kotlin intégré en supprimant l'utilisation du plug-in org.jetbrains.kotlin.android si vous le pouvez.
Sinon, désactivez-le en définissant android.builtInKotlin=false .
|
android.uniquePackageNames |
Garantit que chaque bibliothèque possède un nom de package distinct. | false → true |
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.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'appareil d'application (AndroidTest).
Si vous définissez cette valeur sur true , vous rétablirez le comportement de la version 8.13.
|
true → false |
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 des optimisations dans le processus d'importation de projet, ce qui devrait réduire le temps d'importation pour les compilations comportant de nombreux sous-projets de bibliothèque Android. |
aandroid.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. |
false → true |
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 les 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. |
false → true |
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. |
false → true |
Si votre projet n'exige pas l'exécution de tests pour le débogage et la version, 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. | false → true |
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. | false → true |
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>(); } . |
false → true |
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 de conserver le constructeur par défaut.
|
android.defaults.buildfeatures.shaders |
Active la compilation des nuanceurs dans tous les sous-projets. | true → false |
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 } } |
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 d'applications Wear OS, qui n'est plus prise en charge dans Play. Cela inclut la suppression des configurationswearApp
et du DSLAndroidSourceSet.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
etsourceSets
DSL modifiée
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. Toutefois, cela signifie également que les méthodes du bloc DSL doivent passer deCommonExtension
àApplicationExtension
,LibraryExension
,DynamicFeatureExtension
etTestExtension
.
DSL supprimé
Le plug-in Android Gradle 9.0 supprime les éléments suivants :
AndroidSourceSet.jni
, car il ne fonctionnait pas.AndroidSourceSet.wearAppConfigurationName
, en ce qui concerne la suppression de la compatibilité avec l'application Wear OS intégrée.BuildType.isRenderscriptDebuggable
, car il ne fonctionnait pas.ComponentBuilder.enabled
a été remplacé parComponentBuilder.enable
.DependencyVariantSelection
a été remplacé parDependencySelection
, qui est exposé en tant quekotlin.android
.Installation.installOptions(String)
. Elle est remplacée par la propriété mutable deInstallation.installOptions
.VariantBuilder.targetSdk
ettargetSdkPreview
, car elles n'avaient pas de sens dans les bibliothèques. Utilisez plutôtGeneratesApkBuilder.targetSdk
ouGeneratesApkBuilder.targetSdkPreview
.Bloc
PostProcessing
expérimental, mais jamais stabilisé.ProductFlavor.setDimension
, qui est remplacé par la propriétédimension
LanguageSplitOptions
, qui n'était utile que pour Google Play Instant, qui est obsolète.Variant.unitTest
, car il n'était pas applicable au plug-incom.android.test
.unitTest
est disponible sur les sous-typesVariantBuilder
étendantHasUnitTest
.VariantBuilder.enableUnitTest
, car il n'était pas applicable au plug-incom.android.test
.enableUnitTest
est disponible sur les sous-typesVariantBuilder
étendantHasUnitTestBuilder
.VariantBuilder.unitTestEnabled
est supprimé au profit deenableUnitTest
, dont le nom est plus cohérent, sur les sous-typesVariantBuilder
étendantHasUnitTestBuilder
.
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 } } |
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 } } |
API supprimées
Le plug-in Android Gradle 9.0 supprime les éléments suivants :
- Les API
BaseExtension.registerTransform
obsolètes et désactivées, qui n'étaient conservées que pour permettre la compilation avec la dernière version d'AGP tout en ciblant l'exécution sur AGP 4.2 ou version antérieure.
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. |