Le plug-in Android Gradle 8.0.0 est une version majeure qui comprend de nombreux nouveaux et des améliorations.
Compatibilité
Version minimale | Version par défaut | Notes | |
---|---|---|---|
Gradle | 8.0 | 8.0 | Pour en savoir plus, consultez Mettre à jour Gradle. |
Build Tools SDK | 30.0.3 | 30.0.3 | Installez ou configurez des Build Tools SDK. |
NDK | N/A | 25.1.8937393 | Installez ou configurez une autre version du NDK. |
JDK | 17 | 17 | Pour en savoir plus, consultez Définir la version du JDK. |
Versions de correctif
Voici une liste des versions de correctif du plug-in Android Gradle 8.0.
Plug-in Android Gradle 8.0.2 (mai 2023)
Pour obtenir la liste des bugs résolus dans AGP 8.0.2, consultez la Problèmes résolus dans Android Studio 2022.2.1
Plug-in Android Gradle 8.0.1 (mai 2023)
Cette mise à jour mineure inclut les corrections de bugs suivantes :
Problèmes résolus | |
---|---|
Erreur : "No VersionRequirement with the given id in the table" (Pas d'exigence de version avec l'identifiant donné dans le tableau) après la mise à niveau d'AGP 7.2.2 vers 7.4.0
|
|
R8 NullPointerException à markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] Échec de la validation en dur sur Android 11
|
Modification destructive: espace de noms requis dans le script de compilation au niveau du module
Vous devez définir l'espace de noms dans le fichier build.gradle.kts
au niveau du module plutôt que
que le fichier manifeste. Vous pouvez commencer à utiliser la propriété DSL namespace
à partir de la version 7.3 d'AGP. Pour en savoir plus, consultez
Définissez un espace de noms.
Lors de la migration vers le DSL d'espace de noms, tenez compte des problèmes suivants:
- Les versions précédentes d'AGP infèrent l'espace de noms de test à partir de l'espace de noms principal, ou
l'ID application, parfois de manière incorrecte. L'assistant de mise à niveau AGP bloque
s'il détecte que l'espace de noms principal et l'espace de noms test de votre projet sont
identique. Si la mise à niveau est bloquée, vous devez modifier manuellement
testNamespace
et modifiez votre code source en conséquence. - Après avoir modifié l'espace de noms test, il est possible que votre code se compile
mais vos tests d'instrumentation
échouent au moment de l'exécution. Cela peut se produire si votre
le code source du test d'instrumentation fait référence à une ressource définie dans votre
androidTest
et sources d'application.
Pour en savoir plus, consultez problème 191813691, commentaire 19.
Modifications majeures: valeurs par défaut des options de compilation
À partir de la version 8.0 d'AGP, les valeurs par défaut de ces indicateurs ont été remplacées par améliorer les performances de compilation. Pour obtenir de l'aide pour ajuster votre code afin qu'il soit compatible avec certains ces modifications, utilisez l'assistant de mise à niveau AGP (Tools > AGP Upgrade Assistant) (Outils > Assistant de mise à niveau AGP). L'assistant de mise à niveau vous guide tout au long mettre à jour votre code pour s'adapter au nouveau comportement ou définir des indicateurs pour préserver le comportement précédent.
Signaler | Nouvelle valeur par défaut | Valeur par défaut précédente | Notes |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
L'AGP 8.0 ne génère pas de BuildConfig par défaut. Vous devez
pour spécifier cette option à l'aide du DSL dans les projets où vous en avez besoin. |
android.defaults.buildfeatures.aidl |
false |
true |
Par défaut, l'AGP 8.0 n'active pas la prise en charge d'AIDL. Vous devez spécifier cette option en utilisant le DSL dans les projets où vous en avez besoin. Cet indicateur est dont la suppression est prévue dans AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
Par défaut, l'AGP 8.0 n'active pas la prise en charge de RenderScript. Vous devez spécifiez cette option à l'aide du DSL dans les projets où vous en avez besoin. Ce il est prévu que l'indicateur soit supprimé dans la version 9.0 d'AGP. |
android.nonFinalResIds |
true |
false |
AGP 8.0 génère des classes R avec des champs non finaux en
par défaut. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 génère des classes R pour les ressources définies dans
du module actuel uniquement. |
android.enableR8.fullMode |
true |
false |
L'AGP 8.0 active le mode complet de R8 par défaut. Pour en savoir plus, consultez Mode complet R8 |
Modifications destructives: valeurs des options de compilation appliquées
À partir de la version 8.0 d'AGP, vous ne pouvez plus modifier les valeurs de ces indicateurs. Si
vous les spécifiez dans le fichier gradle.properties
, la valeur est ignorée et AGP
affiche des avertissements.
Signaler | Valeur appliquée | Notes |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 émet un avertissement s'il détecte une résolution de configuration pendant la phase de configuration, car elle a un impact négatif sur la configuration de Gradle. fois. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 échoue les builds qui utilisent R8 s'il manque des classes pour
pour améliorer l'optimisation DEX. Pour résoudre ce problème, vous devez ajouter
des bibliothèques manquantes ou des règles de conservation -dontwarn . Pour en savoir plus,
voir
Avertissements de classe manquants dans le réducteur R8. |
android.testConfig.useRelativePath |
true |
Lorsqu'il est possible d'utiliser des ressources, des éléments et des fichiers manifestes Android dans
les tests unitaires sont activés, l'AGP 8.0 génère
Fichier test_config.properties ne contenant que des éléments relatifs
chemins d'accès. Cela garantit que les tests unitaires Android peuvent toujours utiliser Gradle
et le cache de compilation. |
android.useNewJarCreator |
true |
AGP utilise la bibliothèque Zipflinger lors de la création de fichiers JAR pour améliorer les performances de compilation. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Lorsque l'ajout d'informations sur les dépendances du SDK dans les AAB et les APK est activé, AGP 8.0 ajoute également une liste de dépôts de projets à ces informations. À Pour en savoir plus, consultez Informations sur les dépendances pour la Play Console |
android.enableArtProfiles |
true |
Les profils de référence sont désormais toujours générés. Pour en savoir plus, consultez la section Profils de référence. |
android.enableNewResourceShrinker |
true |
Utilisez la nouvelle implémentation de réducteur de ressources par défaut. Les nouvelles le réducteur de ressources est compatible avec les fonctionnalités dynamiques. |
android.enableSourceSetPathsMap |
true |
Utilisé pour calculer les mappages de chemins d'accès aux ressources relatifs, de sorte que Gradle crée sont à jour plus souvent. |
android.cacheCompileLibResources |
true |
Les ressources de bibliothèque compilées peuvent désormais être mises en cache par défaut, car Gradle
suit les fichiers de ressources par rapport à l'emplacement du projet. Nécessite
android.enableSourceSetPathsMap à activer. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 ne crée aucun composant SoftwareComponent par défaut. À la place, l'AGP crée SoftwareComponents uniquement pour les variantes configurées pour être publiées à l'aide du DSL de publication. |
Nouvel indicateur stable pour le profil d'exécution
L'AGP inclut le nouvel indicateur android.settings.executionProfile
. Utilisez cet indicateur pour :
remplacer le profil d'exécution par défaut
SettingsExtension
Pour en savoir plus, consultez la documentation sur le plug-in de paramétrage.
Pour prévisualiser les indicateurs expérimentaux, consultez la notes de version preview.
Attribution de propriétés différées Kotlin non compatible
Si vous utilisez le DSL Kotlin de Gradle pour vos scripts de compilation, notez qu'Android
Studio et AGP 8.0 ne prennent pas en charge l'attribution de propriété expérimentale à l'aide du
=
. Pour en savoir plus sur cette fonctionnalité, consultez les
Notes de version
et
documentation.
Catégories de tâches Build Analyzer
À partir d'Android Studio Flamingo, Build Analyzer propose une nouvelle vue par défaut pour des tâches qui ont une incidence sur la durée de la compilation. Si votre projet utilise AGP 8.0 ou une version ultérieure, au lieu d'afficher les tâches individuellement, Build Analyzer les regroupe catégorie. Par exemple, les tâches spécifiques aux ressources Android, à Kotlin ou à la conversion au format .dex sont regroupés, puis triés par durée de compilation. Il est ainsi facile de de savoir quelle catégorie a le plus d'impact sur la durée de la compilation. Développer chaque catégorie affiche la liste des tâches correspondantes. Pour afficher les tâches individuellement, sans regroupement, utilisez le menu déroulant Grouper par.
Nouveau plug-in de paramètres
AGP 8.0.0-alpha09 introduit le nouveau plug-in de paramètres. Le plug-in Settings permet vous centralisez les configurations globales (configurations qui s'appliquent à tous les modules) dans au même endroit afin de ne pas avoir à copier et coller les configurations dans plusieurs modules. Vous pouvez également utiliser le plug-in "Settings" pour créer un outil profils d'exécution, ou instructions différentes sur l'exécution d'un outil, et passer de l'un à l'autre.
Pour utiliser le plug-in de paramètres, appliquez-le dans le fichier settings.gradle
:
apply plugin 'com.android.settings'
Centralisez les configurations globales
Pour configurer les configurations globales, utilisez le nouveau bloc android
dans le
settings.gradle
. Exemple :
android {
compileSdk 31
minSdk 28
...
}
Profils d'exécution d'outils
Le plug-in de paramètres vous permet également de créer des profils d'exécution pour certains outils. Une le profil d'exécution détermine la façon dont un outil est exécuté ; vous pouvez sélectionner différentes en fonction de l'environnement. Dans un profil d'exécution, définir des arguments JVM pour un outil et le configurer pour qu'il s'exécute dans un processus distinct. Actuellement, seul le L'outil R8 est compatible.
Créez des profils d'exécution et définissez celui par défaut dans le
settings.gradle
, comme illustré dans l'exemple suivant:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
Pour remplacer le profil par défaut, sélectionnez un autre profil à l'aide de l'icône
Propriété android.experimental.settings.executionProfile
dans
Fichier gradle.properties
:
android.experimental.settings.executionProfile=high
Vous pouvez également définir cette propriété à l'aide de la ligne de commande, ce qui vous permet de configurer
différents workflows. Par exemple, si vous disposez d'un workflow d'intégration continue
vous pouvez utiliser la ligne de commande pour modifier le profil d'exécution sans avoir à
Modifiez le fichier settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
JDK 17 est requis pour exécuter AGP 8.0
JDK 17 est désormais requis lorsque vous utilisez le plug-in Android Gradle 8.0 pour compiler votre application pour exécuter Gradle. Android Studio Flamingo inclut JDK 17 et configure Gradle pour l'utilisent par défaut, ce qui signifie que la plupart des utilisateurs d'Android Studio n'ont pas besoin de faire toute modification de configuration apportée à leurs projets.
Si vous devez définir manuellement la version du JDK utilisé par l'AGP dans Android Studio, vous devez utiliser JDK 17 ou version ultérieure.
Si vous utilisez l'AGP indépendamment d'Android Studio, mettez à niveau la version du JDK en
définir le JAVA_HOME
variable d'environnement
ou -Dorg.gradle.java.home
option de ligne de commande
dans votre répertoire d'installation de JDK 17.