Todas las bibliotecas com.android.support deben usar la misma versión exacta

Cuando actualicé mi estudio de Android hoy de la versión 2.2.3 a la 2.3, de repente obtuve este error en mi build.gradle en la primera línea de comstackción en dependencias

(No importa qué dependencia será en primer lugar, pero siempre me dará este error):

Todas las bibliotecas de com.android.support deben usar exactamente la misma especificación de versión (las versiones de mezcla pueden provocar lockings en el tiempo de ejecución). Versiones encontradas 25.2.0, 24.0.0. Los ejemplos incluyen com.android.support:animated-vector-drawable:25.2.0 y com.android.support:mediarouter-v7:24.0.0

He revisado todo mi proyecto y no puedo encontrar ningún uso de las versiones 24.0.0 (he buscado con ctrl + shift + F para buscar en todo el proyecto)

este es mi 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' } 

He revisado todo mi proyecto y no puedo encontrar ningún uso de las versiones 24.0.0

Viene como una dependencia transitiva de una de sus otras dependencias.

Primero, sin embargo, arregle los otros problemas en su archivo build.gradle , ya que también pueden solucionar este problema:

  • No use + para una versión de biblioteca. Usa una versión específica.

  • No use play-services . Use las dependencias específicas para las piezas específicas del SDK de Play Services que desee. play-services trae todos los Servicios de Play, lo que hace que tu aplicación sea mucho más grande de lo que necesita ser y ralentiza mucho tu tiempo de construcción.

  • Reemplace com.mcxiaoke.volley con el artefacto Volley oficial ( com.android.volley:volley:1.0.0 )

Si ninguno de ellos aclara el problema, puede ejecutar un informe de dependencia de Gradle para ver cuál es su árbol completo de dependencias. A partir de ahí, verá cuál de sus bibliotecas solicita una versión diferente de las bibliotecas de soporte de Android. Para lo que sea que esté pidiendo, puede solicitarlo directamente con la versión 25.2.0 , o utilizar otros enfoques de resolución de conflictos de Gradle para organizar la obtención de la misma versión.

Para elaborar sobre la respuesta aceptada , la resolución de dependencia adecuada para el caso de biblioteca de soporte es la siguiente:

No solo agregue dependencias transitivas como dependencias directas para forzar sus versiones; esto es semánticamente lo incorrecto (si alguna vez eliminas la dependencia que trajo la dependencia transitiva, ahora tienes una dependencia sobrante que no estás usando en realidad).

Haz lo siguiente:

En tu build.gradle raíz, ya deberías tener

 ext { supportlib_version = '27.1.1' ... } 

y utilizar esta propiedad en su app/build.gradle ejemplo

 dependencies { implementation "com.android.support:appcompat-v7:$supportlib_version" implementation "com.android.support:recyclerview-v7:$supportlib_version" ... } 

Ahora, en su raíz build.gradle , tenga

 subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex') ) { details.useVersion "$supportlib_version" } } } } 

es decir, en cada módulo y en cada configuración, al resolver dependencias, si se trata de una lib de soporte (pero no multidex (puede haber más excepciones)), fuerce la versión a su versión de lib de soporte estandarizado.

Para todos los casos, no solo para estas versiones o bibliotecas:

Preste atención a la pequeña ventana de información que dice algo sobre el error, dice los ejemplos que debe cambiar y agregar.

No puede ver los usos porque su uso probablemente sea interno de otra biblioteca (como google play services o squareup).

Simplemente compile todos los ejemplos que dice la pequeña ventana de información , en su caso:

Los ejemplos incluyen com.android.support:animated-vector-drawable:25.2.0 y com.android.support:mediarouter-v7:24.0.0

Tu

com.android.support:animated-vector-drawable:25.2.0

es la versión 25.2.0, y su

com.android.support:mediarouter-v7:24.0.0

es la versión 24.0.0, por lo que debe agregar el mediarouter con la misma versión:

 com.android.support:mediarouter-v7:25.2.0 

Y hazlo por cada ejemplo que dice la pequeña ventana de información; en su caso, todas las bibliotecas que no tienen la versión 25.2.0.

Tienes que sincronizar el gradle después de que arregles la biblioteca indicada para ver la próxima biblioteca y paquete que tienes que cambiar.

El mismo problema me pasó a mí. Lo que acabo de hacer que agregó estas dos líneas

 compile 'com.android.support:animated-vector-drawable:25.2.0' compile 'com.android.support:customtabs:25.2.0' 

problema resuelto. También borré mi versión anterior de la carpeta gradle.

puedes añadir

 compile 'com.android.support:customtabs:25.2.0' 

y al hacer clic derecho en la dependencia de Gradle , puede agregar las dependencias conflictivas. para mí fue

 compile 'com.android.support:cardview-v7:25.2.0' compile 'com.android.support:animated-vector-drawable:25.2.0' 

Agregue esto al final de su build.gradle (Módulo: aplicación):

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

Aquí se señala que agregar esta línea eliminará el error.

 compile 'com.android.support:customtabs:25.2.0' 

Parece que Android Studio 2.3 requiere declarar dependencias externas explícitamente. Las dependencias son tags personalizadas y paleta-v7.

Debería agregar explícitamente las siguientes dos dependencias / paquetes externos en build.gradle

 compile 'com.android.support:customtabs:25.2.0' compile 'com.android.support:palette-v7:25.2.0' 

Creo que esto resolvería el problema.

Intente reemplazar compile 'com.google.android.gms:play-services:+' con los paquetes específicos que está usando (vea esta respuesta: https://stackoverflow.com/a/42374426/3495069 )

Tengo el mismo problema en Android Studio 2.3

antes de: enter image description here

Entonces, bash:

 ./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 biblioteca base-rvadapter no incluye 25.3.1:

 com.zhy:base-rvadapter:3.0.3 | \--- com.android.support:recyclerview-v7:23.4.0 

Finalmente, agrego una línea:

 compile 'com.android.support:design:25.3.1' 

el diseño incluye appcompat-v7 y el enlace 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 (*) 

después: enter image description here

Eliminar o actualizar la siguiente dependencia

  compile 'com.google.android.gms:play-services:9.6.1' 

o solo agregue los servicios selectivos como este

 compile 'com.google.android.gms:play-services-fitness:10.2.4' compile 'com.google.android.gms:play-services-wearable:10.2.4' 

Haga que todas las dependencias de la misma versión o última versión en su caso reemplacen las versiones de la biblioteca de soporte con 25.2.0.

Use versiones específicas en lugar de + . Por ejemplo, ‘com.google.android.gms: play-services: 10.2.0’

Y use SDK específicos que esté utilizando en lugar de agregar todo el paquete Play-SDKs. Por ejemplo:

 'com.google.android.gms:play-services-gcm:10.2.0' 'com.google.android.gms:play-services-maps:10.2.0' 'com.google.android.gms:play-services-location:10.2.0' 

Esto me ayudó a resolver el problema.