Quand j'ai mis à jour mon Android studio aujourd'hui de la version 2.2.3 à la version 2.3, j'ai soudainement eu cette erreur dans mon build.gradle sur la première ligne de compilation en dépendances.
(Peu importe quelle dépendance sera au départ mais cela me donnera toujours cette erreur):
Toutes les bibliothèques com.Android.support doivent utiliser exactement la même spécification de version (le mélange de versions peut entraîner des pannes à l'exécution). Trouvé versions 25.2.0, 24.0.0. Les exemples incluent com.Android.support:animated-vector-drawable:25.2.0 et com.Android.support:mediarouter-v7:24.0.0
j'ai parcouru tout mon projet et je ne trouve aucune utilisation des versions 24.0.0 (j'ai cherché avec Ctrl + Maj + F pour chercher dans tout le projet)
c'est mon build.gradle:
Android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
useLibrary 'org.Apache.http.legacy'
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionName "1.0"
versionCode 1
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
}
debug {
minifyEnabled true
shrinkResources true
}
}
dexOptions {
javaMaxHeapSize "4g"
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.Android.support:appcompat-v7:25.2.0'
compile 'com.google.Android.gms:play-services:+'
compile 'com.squareup:otto:1.3.8'
compile 'com.mcxiaoke.volley:library-aar:1.0.0'
compile 'com.Android.support:multidex:1.0.1'
}
j'ai parcouru tout mon projet et je ne trouve aucune utilisation des versions 24.0.0
Il s'agit d'une dépendance transitive de l'une de vos autres dépendances.
Tout d’abord, cependant, corrigez les autres problèmes de votre fichier build.gradle
, car ils pourraient également résoudre ce problème:
N'utilisez pas +
pour une version de bibliothèque. Utilisez une version spécifique.
Ne pas utiliser play-services
. Utilisez les dépendances spécifiques pour les éléments spécifiques du SDK de Play Services que vous souhaitez. play-services
fait entrer tous de Play Services, ce qui rend votre application beaucoup plus grosse que nécessaire et ralentit considérablement les temps de compilation.
Remplacez com.mcxiaoke.volley
par l'artefact officiel Volley (com.Android.volley:volley:1.0.0
)
Si aucun de ces problèmes ne résout le problème, vous pouvez générer un rapport de dépendance Gradle pour connaître l’arborescence complète de vos dépendances. À partir de là, vous verrez laquelle de vos bibliothèques demande une version différente des bibliothèques Android Support. Pour tout ce qu'il demande, vous pouvez le demander directement avec la version 25.2.0
ou utiliser les autres méthodes de résolution des conflits de Gradle pour obtenir la même version.
Pour élaborer sur le réponse acceptée , la résolution de dépendance appropriée pour le cas de la bibliothèque de support est la suivante:
N'ajoutez pas simplement des dépendances transitives en tant que dépendances directes pour forcer leurs versions; c'est sémantiquement la mauvaise chose à faire (si vous supprimez la dépendance qui a introduit la dépendance transitive, vous avez maintenant une dépendance restante que vous n'utilisez pas réellement).
Faites ce qui suit:
Dans votre racine _build.gradle
_, vous devriez déjà avoir
_ext {
supportlib_version = '27.1.1'
...
}
_
et utilisez cette propriété dans votre exemple. _app/build.gradle
_ like
_dependencies {
implementation "com.Android.support:appcompat-v7:$supportlib_version"
implementation "com.Android.support:recyclerview-v7:$supportlib_version"
...
}
_
Maintenant, dans votre racine _build.gradle
_, avez
_subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "$supportlib_version"
}
}
}
}
_
autrement dit, dans chaque module et chaque configuration, lors de la résolution des dépendances, s'il s'agit d'une bibliothèque de support (mais pas de celles multidex (il peut y avoir plus d'exceptions)), forcez la version sur votre version de support standardisée.
Maintenant, à l'ère du jetpack et du jetifier, il semble prudent d'utiliser une variante (en supposant que vous ayez migré vers les versions androidx):
Votre exemple _app/build.gradle
_ va maintenant contenir des dépendances androidx, mais les bibliothèques que vous utilisez peuvent toujours importer des dépendances supportlib que vous voulez toujours sur la même version (à savoir, 28.0.0) afin qu'elles puissent être correctement jetifiées au moment de la construction.
Conservez donc les parties racine _build.gradle
_ telles quelles, en utilisant _28.0.0
_ pour le _supportlib_version
_.
Faites attention à la petite fenêtre d’information qui dit quelque chose à propos de l’erreur, elle indique les exemples que vous devez changer et ajouter.
Compilez simplement tous les exemples mentionnés dans la petite fenêtre d'informations, dans votre cas:
) Exemples: com.Android.support:animated-vector-drawable:25.2.0 et com.Android.support:mediarouter-v7:24.0.0
Votre
com.Android.support:animated-vector-drawable:25.2.0
version 25.2.0, et votre
com.Android.support:mediarouter-v7:24.0.0
est la version 24.0.0, vous devez donc ajouter le mediarouter avec la même version:
com.Android.support:mediarouter-v7:25.2.0
Et faites cela pour chaque exemple mentionné dans la petite fenêtre d’information; dans votre cas toutes les bibliothèques qui n'ont pas la version 25.2.0.
Vous devez synchroniser le dégradé après avoir corrigé la bibliothèque indiquée pour voir la prochaine bibliothèque et le prochain paquet à modifier.
Le même problème m'est arrivé. Ce que je viens de faire a ajouté ces deux lignes
compile 'com.Android.support:animated-vector-drawable:25.2.0'
compile 'com.Android.support:customtabs:25.2.0'
problème résolu. J'ai également supprimé ma version précédente du dossier Gradle.
Ajoutez ceci à la toute fin de votre build.gradle (Module: app):
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.Android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.1'
}
}
}
}
Remplacez '25 .3.1' par la version de Android bibliothèque de support que vous souhaitez utiliser, la version doit être au-dessus de la version de votre version de compileSdk.
vous pouvez ajouter
compile 'com.Android.support:customtabs:25.2.0'
et en faisant un clic droit dans la dépendance gradle, vous pouvez ajouter les dépendances conflictuelles. pour moi c'était
compile 'com.Android.support:cardview-v7:25.2.0'
compile 'com.Android.support:animated-vector-drawable:25.2.0'
J'ai le même problème dans Android studio 2.3
Ensuite, j'essaye:
./gradlew -q dependencies app --configuration compile
+--- project :lib
+--- com.jonathanfinerty.once:once:1.2.2
| \--- com.Android.support:support-annotations:25.3.1
+--- com.zhy:base-rvadapter:3.0.3
| \--- com.Android.support:recyclerview-v7:23.4.0
| +--- com.Android.support:support-annotations:23.4.0 -> 25.3.1
| \--- com.Android.support:support-v4:23.4.0 -> 25.3.1
| +--- com.Android.support:support-compat:25.3.1
| | \--- com.Android.support:support-annotations:25.3.1
| +--- com.Android.support:support-media-compat:25.3.1
| | +--- com.Android.support:support-annotations:25.3.1
| | \--- com.Android.support:support-compat:25.3.1 (*)
| +--- com.Android.support:support-core-utils:25.3.1
| | +--- com.Android.support:support-annotations:25.3.1
| | \--- com.Android.support:support-compat:25.3.1 (*)
| +--- com.Android.support:support-core-ui:25.3.1
| | +--- com.Android.support:support-annotations:25.3.1
| | \--- com.Android.support:support-compat:25.3.1 (*)
| \--- com.Android.support:support-fragment:25.3.1
| +--- com.Android.support:support-compat:25.3.1 (*)
| +--- com.Android.support:support-media-compat:25.3.1 (*)
| +--- com.Android.support:support-core-ui:25.3.1 (*)
| \--- com.Android.support:support-core-utils:25.3.1 (*)
+--- com.squareup.okhttp3:okhttp:3.6.0
| \--- com.squareup.okio:okio:1.11.0
+--- com.squareup.okhttp3:logging-interceptor:3.6.0
| \--- com.squareup.okhttp3:okhttp:3.6.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:8.4.0
| +--- com.jakewharton:butterknife-annotations:8.4.0
| | \--- com.Android.support:support-annotations:24.1.0 -> 25.3.1
| \--- com.Android.support:support-annotations:24.1.0 -> 25.3.1
+--- com.github.bumptech.glide:glide:3.7.0
+--- org.litepal.Android:core:1.5.1
+--- com.orhanobut:logger:1.15
+--- com.Android.support:appcompat-v7:25.3.1
| +--- com.Android.support:support-annotations:25.3.1
| +--- com.Android.support:support-v4:25.3.1 (*)
| +--- com.Android.support:support-vector-drawable:25.3.1
| | +--- com.Android.support:support-annotations:25.3.1
| | \--- com.Android.support:support-compat:25.3.1 (*)
| \--- com.Android.support:animated-vector-drawable:25.3.1
| \--- com.Android.support:support-vector-drawable:25.3.1 (*)
la bibliothèque base-rvadapter n'inclut pas 25.3.1:
com.zhy:base-rvadapter:3.0.3
| \--- com.Android.support:recyclerview-v7:23.4.0
Enfin, j'ajoute une ligne:
compile 'com.Android.support:design:25.3.1'
design include appcompat-v7 et le lien base-rvadapter 25.3.1.
+--- project :lib
+--- com.jonathanfinerty.once:once:1.2.2
| \--- com.Android.support:support-annotations:25.3.1
+--- com.zhy:base-rvadapter:3.0.3
| \--- com.Android.support:recyclerview-v7:23.4.0 -> 25.3.1
| +--- com.Android.support:support-annotations:25.3.1
| +--- com.Android.support:support-compat:25.3.1
| | \--- com.Android.support:support-annotations:25.3.1
| \--- com.Android.support:support-core-ui:25.3.1
| +--- com.Android.support:support-annotations:25.3.1
| \--- com.Android.support:support-compat:25.3.1 (*)
+--- com.squareup.okhttp3:okhttp:3.6.0
| \--- com.squareup.okio:okio:1.11.0
+--- com.squareup.okhttp3:logging-interceptor:3.6.0
| \--- com.squareup.okhttp3:okhttp:3.6.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:8.4.0
| +--- com.jakewharton:butterknife-annotations:8.4.0
| | \--- com.Android.support:support-annotations:24.1.0 -> 25.3.1
| \--- com.Android.support:support-annotations:24.1.0 -> 25.3.1
+--- com.github.bumptech.glide:glide:3.7.0
+--- org.litepal.Android:core:1.5.1
+--- com.orhanobut:logger:1.15
+--- com.Android.support:appcompat-v7:25.3.1
| +--- com.Android.support:support-annotations:25.3.1
| +--- com.Android.support:support-v4:25.3.1
| | +--- com.Android.support:support-compat:25.3.1 (*)
| | +--- com.Android.support:support-media-compat:25.3.1
| | | +--- com.Android.support:support-annotations:25.3.1
| | | \--- com.Android.support:support-compat:25.3.1 (*)
| | +--- com.Android.support:support-core-utils:25.3.1
| | | +--- com.Android.support:support-annotations:25.3.1
| | | \--- com.Android.support:support-compat:25.3.1 (*)
| | +--- com.Android.support:support-core-ui:25.3.1 (*)
| | \--- com.Android.support:support-fragment:25.3.1
| | +--- com.Android.support:support-compat:25.3.1 (*)
| | +--- com.Android.support:support-media-compat:25.3.1 (*)
| | +--- com.Android.support:support-core-ui:25.3.1 (*)
| | \--- com.Android.support:support-core-utils:25.3.1 (*)
| +--- com.Android.support:support-vector-drawable:25.3.1
| | +--- com.Android.support:support-annotations:25.3.1
| | \--- com.Android.support:support-compat:25.3.1 (*)
| \--- com.Android.support:animated-vector-drawable:25.3.1
| \--- com.Android.support:support-vector-drawable:25.3.1 (*)
\--- com.Android.support:design:25.3.1
+--- com.Android.support:support-v4:25.3.1 (*)
+--- com.Android.support:appcompat-v7:25.3.1 (*)
+--- com.Android.support:recyclerview-v7:25.3.1 (*)
\--- com.Android.support:transition:25.3.1
+--- com.Android.support:support-annotations:25.3.1
\--- com.Android.support:support-v4:25.3.1 (*)
On dirait que Android Studio 2.3 nécessite de déclarer explicitement les dépendances externes. Les dépendances sont customtabs et palette-v7.
Vous devrez explicitement ajouter les deux dépendances/packages externes suivants dans build.gradle.
compile 'com.Android.support:customtabs:25.2.0'
compile 'com.Android.support:palette-v7:25.2.0'
Je pense que cela résoudrait le problème.
Ici il est indiqué que l'ajout de cette ligne supprimera l'erreur.
compile 'com.Android.support:customtabs:25.2.0'
Supprimer ou mettre à jour la dépendance suivante
compile 'com.google.Android.gms:play-services:9.6.1'
ou seulement ajouter les services sélectifs comme celui-ci
compile 'com.google.Android.gms:play-services-fitness:10.2.4'
compile 'com.google.Android.gms:play-services-wearable:10.2.4'
Essayez de remplacer compile 'com.google.Android.gms:play-services:+'
par le (s) paquet (s) spécifique (s) que vous utilisez (voyez cette réponse: https://stackoverflow.com/a/42374426/3495069 )