Corriger l'erreur : All com.android.support libraries must use the exact same version specification
Le message d'erreur s'affiche lorsque vous appelez dans votre projet d'application Android la même librairie mais dans deux versions différentes.
Lors du développement d'un projet sous Android, il faut faire appel à différentes librairies selon ses besoins. Ces librairies font elles-mêmes appel à d'autres librairies pour pouvoir fonctionner. Le message "All com.android.support libraries must use the exact same version specification" s'affiche lorsque vous appelez dans votre projet la même librairie mais dans deux versions différentes. Pour corriger ce problème, il existe des solutions différentes selon la version d'Android Studio installée.
Quelle que soit la version d'Android Studio, vous pouvez toujours utiliser le moteur de production Graddle. Cet outil permet de construire des projets dans différentes versions et gère Android. Il est possible de demander à Graddle de débugger la compilation du projet. L'outil va lister les erreurs et vous indiquer où se situe le conflit. L'outil s'appelle sous un système Windows avec la commande "gradlew" alors que sous un autre système, il faut utiliser la commande "./gradlew". La commande permettant de tester la compilation du projet varie selon la version de Gradle installée. Pour les versions antérieures à la version 3, il faut utiliser la commande suivante :
gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath
A partir de la version 3, la commande "AndroidTestCompile" est remplacée par "androidTestImplementation".
gradlew -q dependencies app:dependencies --configuration debugAndroidTestImplementationClasspath
Selon les erreurs, vous devrez importer la librairie dans une version identique à celle importée par la ou les autre(s) librairie(s).
A partir de la version 3 d'Android Studio, l'erreur est devenue plus facile à résoudre car le logiciel donne davantage d'informations sur le conflit de librairies. Voici un exemple de message d'erreur : "All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 26.1.0, 25.2.0. Examples include com.android.support:animated-vector-drawable:26.1.0 and com.android.support:mediarouter-v7:25.2.0".
Pour résoudre le problème, il suffit de modifier la directive chargée d'importer la deuxième librairie, ici "com.android.support:mediarouter-v7" en indiquant la première version listée :
implementation "com.android.support:mediarouter-v7:26.1.0"
Il faudra relancer une synchronisation pour que Gradle puisse de nouveau tester les versions de chaque librairie.