web-dev-qa-db-fra.com

Toutes les bibliothèques com.Android.support doivent utiliser exactement la même version

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'
}
68
Alex

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.

56
CommonsWare

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_.

63
Jule

Pour tous les cas, pas seulement pour ces versions ou bibliothèques:

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.

Vous ne pouvez pas voir les utilisations car son utilisation est probablement interne à une autre bibliothèque (comme les services de Google Play ou squareup).

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.

23
Brandon Zamudio

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.

12
Code Hunter

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.

8
ezzou

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'
8
rookieDeveloper

J'ai le même problème dans Android studio 2.3

avant: enter image description here

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 (*)

après: enter image description here

4
thearyong

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.

2
Sujit Devkar

Ici il est indiqué que l'ajout de cette ligne supprimera l'erreur.

compile 'com.Android.support:customtabs:25.2.0'
2
Alex Newman

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'
1
Android Man

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 )

1
mVck