Plug-in Android Gradle 8.2.0 (novembre 2023)

Le plug-in Android Gradle 8.2.0 est une version majeure qui comprend de nombreuses nouvelles fonctionnalités et améliorations.

Compatibilité

Le niveau d'API maximal compatible avec le plug-in Android Gradle 8.2 est le niveau d'API 34. Voici d'autres informations sur la compatibilité:

Version minimale Version par défaut Notes
Gradle 8.2 8.2 Pour en savoir plus, consultez Mettre à jour Gradle.
Build Tools SDK 34.0.0 34.0.0 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.

Nouvelle macro pour spécifier le chemin d'accès au JDK

#GRADLE_LOCAL_JAVA_HOME est une nouvelle macro que vous pouvez utiliser pour spécifier le chemin d'accès au JDK. Il est ainsi plus facile et plus sûr de spécifier le chemin d'accès à la page d'accueil Java utilisée pour l'exécution du daemon Gradle (processus en arrière-plan) pour votre projet. La sélection du chemin d'accès est stockée dans le champ java.home du fichier .gradle/config.properties. Définissez ce champ via les paramètres JDK Gradle dans Android Studio: File (Fichier) ou Android Studio (Android Studio) sous macOS > Settings (Paramètres) > Build, Execution, Deployment (Compilation, exécution, déploiement) > Build Tools (Outils de compilation) > Gradle.

Les nouveaux projets utiliseront #GRADLE_LOCAL_JAVA_HOME par défaut. Les projets existants seront automatiquement migrés vers la nouvelle macro après une synchronisation réussie, sauf si vous utilisez déjà une macro telle que #JAVA_HOME.

Les principaux avantages de la nouvelle macro sont les suivants :

  • Vous pouvez modifier manuellement le chemin d'accès au JDK pour déclencher la synchronisation sans avoir à ouvrir votre projet.
  • Moins d'erreurs liées à des versions incompatibles de Gradle et du JDK du projet, car il existe une source unique d'informations pour votre sélection du JDK Gradle.

Problèmes résolus

Plug-in Android Gradle 8.2.0

Problèmes résolus
Plug-in Android Gradle
Les types de sources personnalisés devraient créer des ensembles de sources de plusieurs types
La vérification de la version du SDK ne gère pas les utilisateurs des extensions SDK
DependenciesInfoBuilder a besoin d'une mise à jour et d'une documentation pour l'API
Échec de DexingNoClasspathTransform (minSdk >= 24) avec la cible Java 11 en raison de membres imbriqués manquants
DslExtension.Builder.extendProjectWith() ne fonctionne pas comme décrit en Groovy
Ajout de l'API VariantSelector.withFlavor qui n'utilise pas kotlin.Pair
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) présente un défaut de cache (miss), car "proguard.txt" a changé
Le fichier manifeste fusionné avec l'application contient les attributs extractNativeLibs et useEmbeddedDex à partir des dépendances
Échec d'AIDL avec Build Tools 33.0.0
AGP : exposer le chemin d'accès à l'outil AIDL et au fichier AIDL du framework en tant qu'API publique
Requête : laissez l'IDE proposer un correctif pour "PermittedSubclasses requires ASM9" (PermittedSubclasses nécessite ASM9)
Ciblage du bytecode 17 lors de la compilation d'AGP
Suppression de VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols n'affecte pas le packaging androidTest
Les tâches de test d'instrumentation GMD sont bloquées et échouent en cas de nouvelle tentative
generateLocaleConfig dans agp 8.1.0 utilise un ordre non déterministe qui endommage les compilations reproductibles
ProcessApplicationManifest.navigationJsons contient des fichiers avec des chemins absolus
Une fois AnalyticsService créé, l'accès à GradleBuildProject.Builder via AnalyticsConfiguratorService n'est pas autorisé
AndroidTest.packaging.jniLibs.keepDebugSymbols n'affecte pas le packaging androidTest
Compilation autorisée pour les valeurs de couleur illégales
"ReplaceWith" incorrect pour VariantBuilder
Gradle 8.1 interrompt la mise en cache de la configuration en raison de .gradle/.android/analytics.settings
Les messages d'abandon n'utilisent pas "ReplaceWith"
Annonce d'un moyen d'obtenir la version par défaut du NDK
Le plug-in Android Gradle nécessite Java 17 pour s'exécuter
Incompatibilité entre la transformation ASM et toAppend()
Correction d'erreurs lint lors de l'exécution de lint avec K2 UAST via Gradle sur un projet KMP
Prise en charge du niveau de variante missingDimensionStrategy, et éventuellement du type de compilation/flavor matchingFallback
"android.injected.studio.version" a été supprimé dans Android Studio Giraffe
Ajout de la possibilité de désactiver AndroidXDependencyCheck
generateLocaleConfig dans agp 8.1.0 utilise un ordre non déterministe qui endommage les compilations reproductibles
Annonce des exigences des versions R8/D8 dans les métadonnées AAR (par exemple, pour coreLibraryDesugaring et les nouvelles API hors ligne)
Avertissement de synchronisation : "GradleBuildProject.Builder ne doit pas être accessible via AnalyticsConfiguratorService après la création d'AnalyticsService"
Mise à jour vers la version intermédiaire ou finale de Gradle 8.2
Impossible d'accéder à "java.lang.Comparable"
androidResources n'est pas disponible dans le module de bibliothèque Android.
L'exécution de la tâche ':app:mergeReleaseClasses' a échoué après la mise à jour d'AGP de la version 8.0.2 à la version 8.1.0
Gradle 8.1 interrompt la mise en cache de la configuration en raison de .gradle/.android/analytics.settings
[AGP 8.1.0] Le test ./gradlew échoue avec le message "Unable to find manifest output" (Impossible de trouver la sortie du fichier manifeste) si les valeurs splits.abi.isEnable et testOptions.unitTests.isIncludeAndroidResources sont définies sur true.
Android Studio Giraffe ne respecte pas versionCodeOverride avec AGP 8.1.
AGP 8.1.0 désinstalle l'application après avoir exécuté des tests d'instrumentation, ce qui n'est pas le cas de la version 7.4.2.
La transformation d'un APK génère une erreur avec ListingFileRedirectTask.
RÉGRESSION HEDGEHOG : le bouton "Run" (Exécuter) est retardé de quelques secondes (création d'une spécification)
Compilateur DEX (D8)
Activation de l'enregistrement natif et des classes scellées lors de la conversion au format .dex pour min-api 34 et versions ultérieures
Lint
La vérification lint instanciée ne gère pas correctement AppComponentFactory
Les versions alpha de lint 8.2.0 ne prennent toujours pas en charge l'importation de fonctions de niveau supérieur dans Kotlin
Ajout d'une option permettant de ne pas inclure les numéros de ligne et de colonne dans la référence lint
Ajout d'une option permettant de ne pas inclure les numéros de ligne et de colonne dans la référence lint
Les tests lint ne prennent pas en charge les fonctionnalités du langage Java 17
Bumblebee 2021.1.1 Correctif 1 indique qu'une ancienne version (20030203.000550) de commons-io est plus récente que la version 2.11.0
Les versions alpha de lint 8.2.0 ne prennent toujours pas en charge l'importation de fonctions de niveau supérieur dans Kotlin
Bumblebee 2021.1.1 Correctif 1 indique qu'une ancienne version (20030203.000550) de commons-io est plus récente que la version 2.11.0
Android Studio indique à tort que la version spécifiée est obsolète.
lint ignore le problème UseValueOf lors de l'utilisation de K2 UAST
Problèmes inattendus provenant d'un autre projet signalé par Android Lint
Android Lint échoue sur une bibliothèque KMP quand la propriété "variantInputs.name" n'a pas de valeur configurée.
Intégration de Lint
Erreur lint DuplicatePlatformClasses liée à la dépendance testImplementation
Réducteur de code (R8)
java.lang.VerifyError : le vérificateur a rejeté la classe
Le build reste bloqué sur :minifyReleaseWithR8 lors de l'utilisation de la bibliothèque Apache POI
Kotlin 1.9 entraîne la destruction des lambdas Kotlin par R8 si les vérifications de valeurs nulles sont supprimées

Plug-in Android Gradle 8.2.1

Problèmes résolus
Plug-in Android Gradle
Ne pas exécuter de tâche dexing sur les classes de sous-projets lorsqu'elles sont déjà converties au format .dex via des transformations d'artefact
Échec du plug-in Android Gradle avec JavaVersion.VERSION_11 et OpenJDK 21 ea
Compilateur DEX (D8)
Enregistrements de désucrage pour Android U
Réducteur de code (R8)
R8 génère un fichier DEX défectueux, ce qui entraîne une exception de diffusion de classe au moment de l'exécution.
R8 entraînant un changement d'interface en interface inaccessible
Plantage du SDK R8 Flurry avec AGP 8.2.0
Android : R8 provoque le plantage de la sous-classe de LinearLayoutManager
ClassCastException dans R8 lorsque le repackaging est activé et que la minification, l'obscurcissement et l'optimisation sont désactivés
R8 bloqué dans BridgeAnalyzer.analyzeMethod
R8 v8.2.33, plantage de l'exécution après la mise à niveau "java.lang.VerifyError: type incorrect dans la pile d'opérande"

Plug-in Android Gradle 8.2.2

Problèmes résolus
Plug-in Android Gradle
Impossible de définir la version de JaCoCo dans AGP 8.2.0
Compilateur DEX (D8)
[Bibliothèque désucrée] La version 2.1 de la bibliothèque désucrée n'est pas compatible avec les versions précédentes de R8
Optimisations fonctionnent, même avec D8 uniquement ?
Réducteur de code (R8)
[R8 8.3.21] R8 8.3.21 dépasse 1,57 Mo par rapport à R8 8.1.56
class.getInterfaces() renvoie un résultat vide