Plug-in Android Gradle 3.1.0 (mars 2018)

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

  • Gradle 4.4 ou version ultérieure.

    Pour en savoir plus, consultez la section sur la mise à jour de Gradle.

  • Build Tools 27.0.3 ou version ultérieure.

    Pour rappel, il n'est plus nécessaire de préciser une version spécifique pour les outils de compilation à l'aide de la propriété android.buildToolsVersion, car le plug-in utilise par défaut la version minimale requise.

Nouveau compilateur DEX D8

Par défaut, Android Studio utilise désormais un nouveau compilateur DEX appelé D8. La compilation DEX est le processus qui consiste à transformer le bytecode .class en bytecode .dex pour Android Runtime (ou Dalvik, pour les versions antérieures d'Android). Par rapport au compilateur précédent, appelé DX, D8 compile plus rapidement et génère des fichiers DEX plus petits, tout en ayant des performances d'exécution d'application identiques voire supérieures.

D8 ne devrait pas modifier votre workflow de développement d'applications au quotidien. Toutefois, si vous rencontrez des problèmes liés au nouveau compilateur, veuillez signaler un bug. Vous pouvez désactiver temporairement D8 et utiliser DX en incluant ce qui suit dans le fichier gradle.properties de votre projet :

      android.enableD8=false
    

Pour les projets qui utilisent les fonctionnalités du langage Java 8, le désucrage incrémentiel est activé par défaut. Vous pouvez le désactiver en indiquant le code suivant dans le fichier gradle.properties de votre projet :

      android.enableIncrementalDesugaring=false.
    

Utilisateurs de la version preview : si vous utilisez déjà une version preview de D8, sachez qu'elle est désormais compilée par rapport aux bibliothèques incluses dans SDK Build Tools, et non dans le JDK. Si vous accédez à des API qui existent dans le JDK, mais pas dans les bibliothèques de SDK Build Tools, une erreur de compilation est donc générée.

Changements de comportement

  • Lorsque vous compilez plusieurs APK qui ciblent chacun une ABI différente, le composant ne génère plus d'APK pour les ABI suivantes par défaut : mips, mips64 et armeabi.

    Si vous souhaitez compiler des APK ciblant ces ABI, vous devez utiliser NDK r16b ou une version antérieure et les spécifier dans votre fichier build.gradle, comme indiqué ci-dessous :

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • Le cache de compilation du plug-in Android supprime désormais les entrées de cache de plus de 30 jours.

  • Si vous transmettez "auto" à resConfig, les ressources de chaînes à empaqueter dans votre APK ne sont plus sélectionnées automatiquement. Si vous continuez à utiliser "auto", le plug-in empaquette toutes les ressources de chaînes fournies par votre application et ses dépendances. Vous devez donc spécifier chaque paramètre régional que le plug-in doit empaqueter dans votre APK.

  • Comme les modules locaux ne peuvent pas dépendre de l'APK de test de votre application, l'ajout de dépendances à vos tests d'instrumentation à l'aide de la configuration, androidTestApi au lieu de androidTestImplementation, entraîne la génération de l'avertissement suivant par Gradle :

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

Correctifs

  • Correction d'un problème qui empêche Android Studio de reconnaître correctement les dépendances dans des builds composites
  • Résolution d'une erreur de synchronisation du projet lorsque le plug-in Android est chargé plusieurs fois dans une seule compilation, par exemple lorsque plusieurs sous-projets intègrent chacun le plug-in Android dans leur classpath buildscript