Plug-in Android Gradle 3.3.0 (janvier 2019)

Cette version du plug-in d'Android nécessite les éléments suivants :

3.3.3 (juillet 2020)

Cette mise à jour mineure est compatible avec les nouveaux paramètres et fonctionnalités par défaut pour la visibilité des packages dans Android 11.

Pour en savoir plus, consultez les notes de la version 4.0.1.

3.3.2 (mars 2019)

Cette mise à jour mineure prend en charge Android Studio 3.3.2, et inclut plusieurs corrections de bugs et améliorations de performances. Pour consulter la liste des corrections de bugs principaux, lisez l'article associé sur le blog des mises à jour des versions.

3.3.1 (février 2019)

Cette mise à jour mineure prend en charge Android Studio 3.3.1, et inclut plusieurs corrections de bugs et améliorations de performances.

Nouvelles fonctionnalités

  • Synchronisation des classpaths améliorée : lors de la résolution des dépendances sur vos classpaths au moment de l'exécution et de la compilation, le plug-in Android Gradle tente de résoudre certains conflits de version en aval pour les dépendances qui apparaissent sur plusieurs classpaths.

    Par exemple, si le classpath d'exécution inclut la bibliothèque A version 2.0 tandis que le classpath de compilation inclut la bibliothèque A version 1.0, le plug-in met automatiquement à jour la dépendance dans le classpath de compilation vers la version 2.0 de la bibliothèque A, pour éviter les erreurs.

    Toutefois, si le classpath d'exécution inclut la bibliothèque A version 1.0 alors que le classpath de compilation inclut la bibliothèque A version 2.0, le plug-in ne rétrograde pas la version de la dépendance dans le classpath de compilation vers la version 1.0 de la bibliothèque A, ce qui génère une erreur. Pour en savoir plus, consultez Résoudre les conflits entre les classpaths.

  • Compilation Java incrémentielle améliorée à l'aide de processeurs d'annotations : cette mise à jour réduit la durée de compilation en améliorant la prise en charge de la compilation Java incrémentielle lors de l'utilisation de processeurs d'annotations.

    Remarque : Cette fonctionnalité est compatible avec Gradle 4.10.1 ou version ultérieure, à l'exception de Gradle 5.1 en raison du problème Gradle 8194.

    • Pour les projets avec Kapt (la plupart des projets en Kotlin uniquement et des projets hybrides Kotlin-Java) : la compilation Java incrémentielle est activée, même si vous utilisez la liaison de données ou le plug-in rétro-lambda. Le traitement des annotations par la tâche Kapt n'est pas encore incrémentiel.

    • Pour les projets n'utilisant pas Kapt (projets Java uniquement) : si les processeurs d'annotations que vous utilisez prennent tous en charge le traitement d'annotations incrémentiel, la compilation Java incrémentielle est activée par défaut. Pour surveiller l'adoption des processeurs d'annotations incrémentiels, reportez-vous au problème Gradle 5277.

      Cependant, si un ou plusieurs processeurs d'annotations ne prennent pas en charge les builds incrémentiels, la compilation Java incrémentielle n'est pas activée. À la place, vous pouvez inclure l'indicateur suivant dans votre fichier gradle.properties :

      android.enableSeparateAnnotationProcessing=true
                  

      Si vous incluez cet indicateur, le plug-in Android Gradle exécute les processeurs d'annotations dans une tâche distincte et autorise l'exécution incrémentielle de la tâche de compilation Java.

  • Informations de débogage améliorées lors de l'utilisation d'une API obsolète : lorsque le plug-in détecte que vous utilisez une API qui n'est plus prise en charge, il peut désormais fournir des informations plus détaillées pour vous aider à déterminer où cette API est utilisée. Pour afficher ces informations supplémentaires, vous devez inclure ce qui suit dans le fichier gradle.properties de votre projet :

              android.debug.obsoleteApi=true
            

    Vous pouvez également activer l'indicateur en transmettant -Pandroid.debug.obsoleteApi=true à partir de la ligne de commande.

  • Vous pouvez exécuter des tests d'instrumentation sur les modules de fonctionnalités à partir de la ligne de commande.

Changements de comportement

  • Configuration différée des tâches : le plug-in utilise désormais la nouvelle API de création de tâches de Gradle pour éviter d'initialiser et de configurer des tâches inutiles pour l'exécution du build actuel (ou des tâches qui ne figurent pas sur le graphique des tâches d'exécution). Par exemple, si vous disposez de plusieurs variantes de compilation, telles que "Release" et "Debug", et que vous compilez la version "Debug" de votre application, le plug-in évite d'initialiser et de configurer des tâches pour la version "Release" de votre application.

    L'appel de certaines méthodes plus anciennes dans l'API Variants, comme variant.getJavaCompile(), peut toujours forcer la configuration des tâches. Pour vous assurer que votre build est optimisé pour la configuration différée des tâches, appelez de nouvelles méthodes qui renvoient plutôt un objet TaskProvider, comme variant.getJavaCompileProvider().

    Si vous exécutez des tâches de compilation personnalisées, découvrez comment vous adapter à la nouvelle API de création de tâches de Gradle.

  • Pour un type de compilation donné, lorsque vous définissez useProguard false, le plug-in utilise désormais R8 au lieu de ProGuard pour minifier et obscurcir le code et les ressources de votre application. Pour en savoir plus sur R8, consultez cet article du blog des développeurs Android.

  • Génération de classes R plus rapide pour les projets de bibliothèque : auparavant, le plug-in Android Gradle générait un fichier R.java pour chacune des dépendances de votre projet, puis compilait ces classes R en même temps que les autres classes de votre application. Le plug-in génère désormais un fichier JAR contenant directement la classe R compilée de votre application, sans compiler d'abord les classes R.java intermédiaires. Cette optimisation peut considérablement améliorer les performances de compilation des projets qui incluent de nombreux sous-projets et dépendances de bibliothèque, et accélérer l'indexation dans Android Studio.

  • Lorsque vous créez un Android App Bundle, les APK générés à partir de cet app bundle qui ciblent Android 6.0 (niveau 23 d'API) ou version ultérieure incluent désormais par défaut les versions non compressées de vos bibliothèques natives. Cette optimisation évite que l'appareil ait besoin de créer une copie de la bibliothèque et réduit ainsi la taille de votre application sur disque. Si vous préférez désactiver cette optimisation, ajoutez ce qui suit à votre fichier gradle.properties :

    android.bundle.enableUncompressedNativeLibs = false
            
  • Le plug-in applique les versions minimales de certains plug-ins tiers.

  • Synchronisation d'un projet à variante unique : il est important de synchroniser votre projet avec votre configuration de compilation pour permettre à Android Studio de comprendre la structure de votre projet. Toutefois, ce processus peut prendre beaucoup de temps pour les projets de grande envergure. Si votre projet utilise plusieurs variantes de compilation, vous pouvez à présent optimiser les synchronisations du projet en les limitant à la variante qui est actuellement sélectionnée.

    Vous devez utiliser Android Studio 3.3 ou version ultérieure avec le plug-in Android Gradle 3.3.0 ou version ultérieure pour activer cette optimisation. Lorsque vous remplissez ces conditions, l'IDE vous invite à activer cette optimisation lorsque vous synchronisez votre projet. L'optimisation est également activée par défaut sur les nouveaux projets.

    Pour activer cette optimisation manuellement, cliquez sur Fichier > Paramètres > Expérimental > Gradle (Android Studio > Préférences > Expérimental > Gradle sur Mac), puis cochez la case Synchroniser uniquement la variante active.

    Remarque : Cette optimisation est entièrement compatible avec les projets qui incluent les langages Java et C++, et partiellement compatible avec Kotlin. Lorsque vous activez l'optimisation des projets avec du contenu Kotlin, la synchronisation Gradle bascule vers l'utilisation de variantes complètes en interne.

  • Téléchargement automatique des packages SDK manquants : cette fonctionnalité a été étendue pour prendre en charge NDK. Pour en savoir plus, consultez Télécharger automatiquement les packages manquants avec Gradle.

Correction de bugs

  • Le plug-in Android Gradle 3.3.0 résout les problèmes suivants :

    • Appel de android.support.v8.renderscript.RenderScript par le processus de compilation au lieu de la version AndroidX, bien que Jetifier soit activé
    • Conflits dus au fait que androidx-rs.jar inclut annotation.AnyRes groupé de manière statique
    • Avec RenderScript, vous n'avez plus à définir manuellement la version des outils de compilation dans vos fichiers build.gradle