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-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.
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 Prise en charge de la compilation du code Kotlin directement dans le plug-in Android Gradle, sans le plug-in org.jetbrains.kotlin.android. falsetrue 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. 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.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.
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 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.
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 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.
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, 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 de conserver le constructeur par défaut.
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
  }
}

Fonctionnalités supprimées

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

DSL modifiée

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

DSL supprimé

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

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.