Android : comment gérer le conflit de dépendance 'com.android.support:support-annotations' in project ':app'

Le conflit de dépendances entre deux versions se produit lorsque les versions de la librairie "com.android.support:support-annotations" indiquées dans votre application sont différentes. Cette librairie est déclarée deux fois dans votre application : une fois pour la construction de la version de test et une fois pour la version de production. Cela peut se produire notamment si vous déclarez une version différente dans votre test que celle utilisée par une autre librairie.

Pour résoudre ce conflit, il est alors nécessaire d'importer explicitement la version la plus récente de la librairie dans le fichier "build.gradle" de votre module. Pour importer une librairie, on utilise la directive "implementation" depuis la version 3 d'Android Studio. Si vous travaillez dans une version antérieure, on utilise le mot-clé "compile".

implementation 'com.android.support:support-annotations:27.1.1'

Synchronisez ensuite votre projet pour que le message d'erreur n'apparaisse plus.

Il est également possible de résoudre ce conflit est de définir une propriété dans le projet. Ouvrez le fichier "build.gradle" lié au projet et ajoutez la section suivante :

// Ce bloc contient des propriétés disponibles pour tous les modules du projet.
ext {
    // On peut définir une version précise du SDK
    versionSDK = 26
    // On peut également définir une version précise pour une librairie
    versionSupportLibrairie = "27.1.1"
}

Dans le fichier "build.gradle" de votre module, changez ensuite la section "compileSdkVersion" pour intégrer la variable contenant votre version du SDK.

compileSdkVersion rootProject.ext.versionSDK

Vous pouvez ensuite utiliser la variable contenant la version de la librairie quand vous importez une librairie.

implementation  "com.android.support:appcompat-v7:${rootProject.ext.versionSupportLibrairie}"

Vous éviterez ainsi des conflits dans vos modules. Vous devez également synchroniser votre projet pour que les modifications soient effectives.

Android