Pregunta Todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión


Después de actualizar a android studio 2.3 recibí este mensaje de error. Sé que es sólo una pista, ya que la aplicación funciona normalmente, pero es realmente extraño.

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

enter image description here

mi gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}

503
2018-02-21 17:35


origen


Respuestas:


Puede resolver esto con una de las siguientes soluciones:

Actualizar:

A partir de Android Studio 3.0, se vuelve mucho más fácil, ya que ahora muestra una pista más útil, por lo que solo tenemos que seguir esta sugerencia.
por ejemplo: 1]

Todas las bibliotecas com.android.support deben usar la misma versión exacta   especificación (las versiones de mezcla pueden provocar bloqueos en el tiempo de ejecución). Encontró   versiones 27.0.2, 26.1.0. Ejemplos incluyen   com.android.support:animated-vector-drawable:27.0.2 y   com.android.support:customtabs:26.1.0

hay algunas combinaciones de bibliotecas, o herramientas y bibliotecas, que   son incompatibles, o pueden conducir a errores. Una de esas incompatibilidades es   compilando con una versión de las bibliotecas de soporte de Android que no es   la última versión (o en particular, una versión más baja que su   targetSdkVersion)

Solución:
Agregue explícitamente la biblioteca con la versión anterior pero con un nuevo número de versión.
en mi caso com.android.support:customtabs:26.1.0 entonces necesito agregar:

implementation "com.android.support:customtabs:27.0.2"  

es decir: tome la biblioteca del segundo elemento e impleméntela con el número de versión del primero.

Nota: no olvides presionar sync ahora para que gradle pueda reconstruir el gráfico de dependencia y ver si hay más conflictos.

Explicación:
puede confundirse con el mensaje de error ya que no lo use customtabs Entonces, ¿cómo tengo un conflicto?
bueno ... no lo usaste directamente pero una de tus bibliotecas usa una versión anterior de customtabs internamente, por lo que debe solicitarlo directamente.

si tiene curiosidad por saber cuál de sus bibliotecas es responsable de la versión anterior y tal vez le pida al autor que actualice su lib, ejecute un informe de dependencia de Gradle, consulte la respuesta anterior para saber cómo hacerlo.

Tenga en cuenta esto


Respuesta anterior:

inspirado por Respuesta de CommonsWare:

Ejecute un informe de dependencia de Gradle para ver cuál es su árbol completo de dependencias es.

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 el 25.2.0 versión o use otros enfoques de resolución de conflictos de Gradle para obtener las mismas versiones.


Actualizar:

A partir de la versión del complemento gradle: 3.0 compile ha sido reemplazado por implementation o api ver esta respuesta por la diferencia

por lo tanto use en su lugar:

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

y busca la versión conflictiva.

Para mí, el error desapareció después de eliminar com.google.android.gms:play-services:10.2.0

Y solo incluye com.google.android.gms:play-services-location:10.2.0y com.google.android.gms:play-services-maps:10.2.0 ya que son los únicos dos servicios de juego que uso.

Pienso que el gms:play-services Depende de algunos componentes antiguos de la biblioteca de soporte, por lo que debemos agregarlos explícitamente.


para AS 3.0 un mayor.

Correr:

./gradlew -q dependencies <module-name>:dependencies --configuration compile

Ejemplo:

./gradlew -q dependencies app:dependencies --configuration compile

si alguien conoce una forma mejor en el nuevo plugin de gradle, por favor avíseme.


528
2018-02-21 17:49



  1. Ir project/.idea/libraries carpeta en su sistema de archivos y ver qué bibliotecas son diferentes.
  2. Deberá incluir manualmente estas bibliotecas con la misma versión en su build.gradle archivo.
  3. Luego, sincroniza tu proyecto.

P.ej.:

compile 'com.android.support:appcompat-v7:25.2.0'

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'

165
2018-03-03 12:31



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

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

En este caso:

Se encontraron versiones 25.1.1, 24.0.0. Los ejemplos incluyen com.android.support:animated-vector-drawable:25.1.1 y   com.android.support:mediarouter-v7:24.0.0

Tu 

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

es la versión 25.1.1, y tu 

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

Y hazlo por cada ejemplo que diga la pequeña ventana de información, en este caso  todas las bibliotecas que no tienen la versión 25.1.1.

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.

IMPORTANTE:

Si no está utilizando explícitamente una o más bibliotecas especificadas y le está dando el error, significa que otra biblioteca está utilizando internamente, compílelo explícitamente de todos modos.

También puede usar otro método para ver la diferencia de las versiones de todas las bibliotecas que está compilando realmente (como ejecutar un informe de dependencia de gradle o ir a los archivos de su biblioteca), el verdadero objetivo es compilar todas las bibliotecas que estás utilizando con la misma versión.


124
2018-03-07 18:41



Tuve exactamente el mismo problema después de actualizar a Android Studio 2.3

Agregar esta línea a las dependencias resolvió mi problema:

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

52
2018-03-03 22:01



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

   }
}

Asegúrese de reemplazar '25 .3.1 'con la versión de la biblioteca de soporte de Android que desee utilizar para todas las dependencias, no debe ser menor que su versión de compile sdk

que volver a sincronizar gradle


47
2017-10-26 20:56



A) Ejecutar gradle dependencies o ./gradlew dependencies

B) Mire su árbol y descubra cuál de sus dependencias está especificando una versión de biblioteca de soporte diferente para una dependencia que no controla.

No me di cuenta de que esta advertencia también se muestra si la dependencia no está completamente utilizada directamente por su propio código. En mi caso, Facebook especifica algunas librerías de soporte que no estaba usando, se puede ver a continuación la mayoría de esas dependencias fueron anuladas por mi propia especificación de 25.2.0, denotada por el -> X.X.X (*) símbolos. La vista de tarjeta y las pestañas personalizadas libs no fueron reemplazadas por nadie, así que tengo que pedir 25.2.0 para esas mismas aunque no las use.

+--- com.facebook.android:facebook-android-sdk:4.17.0
|    +--- com.android.support:support-v4:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:appcompat-v7:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:cardview-v7:25.0.0
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    +--- com.android.support:customtabs:25.0.0
|    |    +--- com.android.support:support-compat:25.0.0 -> 25.2.0 (*)
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    \--- com.parse.bolts:bolts-android:1.4.0 (*)

Si Gradle ya te lo advirtió y te dio ejemplos ...

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

... es aún más fácil si arrojas algo de resaltado grep para la versión más baja desde gradle dependencies puede ser bastante detallado:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'

35
2018-03-10 23:25



Usar variables: Al hacer algo como lo siguiente, será más fácil para usted asegurarse de usar la misma versión con todas las bibliotecas

dependencies {

    ext {
        support_library_version = '25.2.0'
        google_play_services_version = '10.2.0'
    }

    //#####################################################################
    //          Support Library
    //#####################################################################
    compile "com.android.support:appcompat-v7:${support_library_version}"
    compile "com.android.support:palette-v7:${support_library_version}"
    compile "com.android.support:design:${support_library_version}"

    //#####################################################################
    //          Google Play Services
    //#####################################################################
    compile "com.google.android.gms:play-services-auth:${google_play_services_version}"
    compile "com.google.android.gms:play-services-ads:${google_play_services_version}"
    compile "com.google.android.gms:play-services-analytics:${google_play_services_version}"

    //#####################################################################
    //          Firebase
    //#####################################################################
    compile "com.google.firebase:firebase-core:${google_play_services_version}"
    compile "com.google.firebase:firebase-auth:${google_play_services_version}"
    compile "com.google.firebase:firebase-messaging:${google_play_services_version}"

Puede encontrar más información sobre cómo Google sugiere que maneje este control de versiones en este artículo: https://developer.android.com/studio/build/index.html#top-level


27
2018-03-22 18:36



Solo agrego esto:

compile 'com.android.support:mediarouter-v7:25.2.0'

Updated para nuevas versiones de SDK

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'

25
2018-03-08 19:35



Si el mismo error está en appcompat

implementation 'com.android.support:appcompat-v7:27.0.1'

luego agregando design resuelto.

implementation 'com.android.support:appcompat-v7:27.0.1'
implementation 'com.android.support:design:27.0.1'

Para mí, agregando

implementation 'de.mrmaffen:vlc-android-sdk:2.0.6'

estaba incluyendo appcompat-v7:23.1.1 en

.idea / libraries

sin vlc, appcompat solo es suficiente.


15
2017-12-06 08:28