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

788

Después de actualizar a Android Studio 2.3, recibí este mensaje de error. Sé que es solo una pista, ya que la aplicación se ejecuta normalmente, pero es realmente extraño.

Todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión (mezclar versiones puede provocar fallas en el tiempo de ejecución). Versiones encontradas 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

ingrese la descripción de la imagen aquí

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'
}
humillado
fuente
agregue esto a sus subproyectos projectBuild.Gradle {project.configurations.all {resolutionStrategy.eachDependency {detalles -> if (details.requested.group == 'com.android.support' &&! details.requested.name.contains ('multidex ')) {details.useVersion "26. +"}}}}
Sunil Chaudhary

Respuestas:

906

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 necesitamos seguir esta pista.
por ejemplo: 1]

Todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión (mezclar versiones puede provocar fallas en el tiempo de ejecución). Versiones encontradas 27.0.2, 26.1.0. Los 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 provocar errores. Una de esas incompatibilidades es compilar con una versión de las bibliotecas de soporte de Android que no es la última versión (o en particular, una versión inferior a 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.0entonces 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 olvide presionar sync ahora para que gradle pueda reconstruir el gráfico de dependencia y ver si hay más conflictos.

Explicación:
el mensaje de error puede confundirlo, ya que no lo uso, ¡ customtabsasí que cómo tengo un conflicto!
bueno ... no lo usaste directamente, pero una de tus bibliotecas usa una versión antigua customtabsinternamente, por lo que debes 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 biblioteca, ejecute un informe de dependencia de Gradle, vea la respuesta anterior para saber cómo.

Nota esto


Vieja respuesta:

inspirado por la respuesta de CommonsWare :

Ejecute 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 usar 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 compileha sido reemplazado por implementationo apivea esta respuesta por la diferencia.

por lo tanto, use en su lugar:

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

o para windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

y busque la versión en conflicto.

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

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

Creo que gms:play-servicesdependen de algunos componentes antiguos de la biblioteca de soporte, por lo que debemos agregarlos explícitamente nosotros mismos.


para AS 3.0 y mayores.

Correr:

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

Ejemplo:

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

si alguien conoce una mejor manera en el nuevo complemento de gradle, hágamelo saber.

humillado
fuente
3
com.google.android.gms:play-services:10.2.0admite el SDK 14 y superior, si desea usar el SDK 14 por debajo, debe usar la versión 10.0.1como se menciona en stackoverflow.com/a/42315590/6248491
Sneh Pandya
2
@humazed noob question, ¿dónde ejecuto el comando en Android Studio?
Haikal Nashuha
1
en la terminal, pero primero, intente probar lo de los servicios de juego
asombrado el
1
¿Soy el único que piensa que esto es una locura? Solo quiero admob y facebook, y se niegan a trabajar juntos ...
Jay
3
Puede ser útil señalar que el examples includetexto en el mensaje de error muestra ejemplos reales de su propio proyecto, no ejemplos generales vagos del tipo de problema. Tome la biblioteca del segundo elemento e impleméntelo con el número de versión del primero.
Benjamin Kershner
203
  1. Vaya a la project/.idea/librariescarpeta en su sistema de archivos y vea qué bibliotecas son diferentes.
  2. Deberá incluir manualmente estas bibliotecas con la misma versión en su build.gradlearchivo.
  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'
João Paulo Paiva
fuente
Buen punto. Nunca pensé en echar un vistazo cuál era realmente el equivocado. : S Gracias!
Tobias Reich
funciona cuando el método de resolución automática de Gradle no funciona, gracias
Odaym
10
En / Archivos de proyecto / Mi proyecto / .idea / bibliotecas hay varios archivos de soporte con diferentes versiones. Ahora, ¿cómo sabría qué módulo o dependencia está usando esto?
Satpal Yadav
2
@SatpalYadav He buscado la versión que no coincide con la más nueva disponible (la uso en mi aplicación). Por ejemplo, uso support: design: 25.3.1 pero material-dialogs usa support-v13: 25.1.1. Así que agregué support-v13: 25.3.1 y el error desaparece.
hardysim
1
Esa es la mejor solución para mí hasta ahora, pero ¿cómo puedo anular las nuevas bibliotecas?
Mateusz Kaflowski el
149

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:

Versiones encontradas 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 su

com.android.support:mediarouter-v7:24.0.0

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

com.android.support:mediarouter-v7:25.1.1

Y haga eso para cada ejemplo que dice la pequeña ventana de información, en este caso todas las bibliotecas que no tienen la versión 25.1.1.

Debe sincronizar el gradle después de corregir la biblioteca indicada para ver la siguiente biblioteca y paquete que debe cambiar.

IMPORTANTE:

Si no está utilizando explícitamente una o más bibliotecas especificadas y le está dando el error, significa que otra biblioteca lo 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 sus bibliotecas), el objetivo real es compilar todas las bibliotecas que está utilizando con La misma versión .

Brandon Zamudio
fuente
1
muchas gracias, ¿podrías explicar qué support:mediarouterhace exactamente?
mrid
1
Creo que esto es algo que usted ha señalado que la mayoría de nosotros hemos pasado por alto. Y es decir: "Presta atención a la pequeña ventana de información que dice algo sobre el error ...". Gracias, esto ahora me da una mejor comprensión de lo que realmente está sucediendo.
Yo Apps
103

La mejor manera de resolver el problema es implementar todos los 'com.android.support: ...' sugeridos por Android Studio

(No importa qué versiones de soporte esté utilizando: 27.1.1, 28.0.0, etc.)

Coloque el cursor en la línea de error, p. Ej.

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

Android Studio le sugerirá qué 'com.android.support: ...' es una versión diferente de 'com.android.support:appcompat-v7:28.0.0'

Ejemplo

Todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión (mezclar versiones puede provocar fallas en el tiempo de ejecución). Versiones encontradas 28.0.0, 27.1.0, 27.0.2. Los ejemplos incluyen com.android.support:animated-vector-drawable:28.0.0 y com.android.support:exifinterface:27.1.0

Entonces agregue com.android.support:animated-vector-drawable:28.0.0 & com.android.support:exifinterface:28.0.0. Ahora sincronice el archivo gradle.

Intente implementar uno por uno todos los 'com.android.support sugeridos: ...' hasta que no haya ningún error en esta línea implementation 'com.android.support:appcompat-v7:28.0.0'

En mi caso, agregué

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

implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

Todas estas dependencias, podrían ser diferentes para usted.

Adarsh ​​Vijayan P
fuente
Agregué manualmente "implementación 'com.android.support:animated-vector-drawable:28.0.0'" y "implementación 'com.android.support:support-media-compat:28.0.0'" pero la "implementación" com.android.support:appcompat-v7:28.0.0 '"todavía está subrayado en rojo
AAEM
@AAEM si coloca el cursor en la línea de error, mostrará cuáles son las dependencias que debe agregar a continuación. Agregue todas las dependencias a la misma versión y sincronice el archivo gradle. Si vuelve a mostrar error, siga los pasos nuevamente hasta que no haya ningún error.
Adarsh ​​Vijayan P
100

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 desea usar para todas las dependencias, no debe ser inferior a su versión de SDK de compilación

que re sincronizar gradle

ezzou
fuente
3
Esto es lo que necesitaba, una de mis dependencias estaba llegando a 27.0.1 de alguna manera, incluso cuando especifiqué una versión menor en el nivel superior. Por curiosidad, ¿por qué excluyen el "multidex"?
Ray
44
Esto me ha salvado el día. Pero este desarrollo de Android se está fragmentando aún más cada vez que pasa. La gente necesita verificar realmente cada biblioteca de soporte perfectamente antes de implementarla. No siempre tenemos el tiempo suficiente para pasar por cada nueva versión de soporte porque queremos centrarnos en crear nuestros productos en lugar de pasar por todo esto. Siempre es frustrante
Larrytech
1
@ThinkTwiceCodeOnce Puede ir aquí para obtener más información sobre groovy y sus complementos de inteliji
ezzou
1
Eres un hombre salvavidas. ¡Esto debería ser votado muchas veces!
Imin
1
esta debe ser la solución ... upvoted
Ast
54

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'
Berat Baran Cevik
fuente
2
Tuve exactamente el mismo problema después de actualizar a Android Studio 2.3
Plugie
1
Para cualquiera que use RenderScript, configuro renderscriptSupportModeEnabled falseesto en falso. Y la compilación agregada 'com.android.support:customtabs:25.2.0'y el error desaparecieron.
Ley Giménez
1
@LawGimenez ¿Y cómo deberíamos usar renderscript si solo lo deshabilitamos?
dor506
3
Parece que mi problema también se debe a renderscript, pero ¿qué sucede si necesito renderscript para otra cosa, no para pestañas personalizadas?
HendraWD
46

A) Ejecutar gradle dependencieso./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 es utilizada directamente por su propio código. En mi caso, Facebook especifica algunas bibliotecas de soporte que no estaba usando, puede ver a continuación la mayoría de esas dependencias fueron anuladas por mi propia especificación de 25.2.0, indicada por los símbolos -> XXX (*) . La vista de la tarjeta y las bibliotecas de pestañas personalizadas no fueron anuladas por nadie, por lo que necesito pedir 25.2.0 para esas personas a pesar de que no las uso.

+--- 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 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 agrega un poco de resaltado grep para la versión inferior, ya que gradle dependenciespuede ser bastante detallado:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'
Daniel Wilson
fuente
1
Según su explicación, entiendo que XXX -> YYY (*) significa que XXX es anulado por YYY, es bueno saberlo
Mercurio
Literalmente, la única respuesta válida.
stef
32

Usar variables : Hacer algo como lo siguiente le facilitará 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

Daniel F
fuente
gracias Estimado Daniel F, creo que esta es la mejor manera de evitar el problema de mezcla de versiones.
Hovanes Mosoyan
2
Solo una nota, por favor: Como se sugiere en el enlace anterior, deberíamos definir este tipo de variables en el ARCHIVO DE GRADO DE NIVEL SUPERIOR, gracias de nuevo)
Hovanes Mosoyan
25

solo agrega 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'
Mohsen mokhtari
fuente
No resuelve el problema de que la biblioteca antigua contenga SDK antiguo.
CoolMind
19

Si el mismo error está activado appcompat

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

luego agregando lo designresolvió.

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

Para mi, agregando

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

estaba incluido appcompat-v7:23.1.1en

.idea / bibliotecas

sin vlc, appcompatsolo es suficiente.

Prabs
fuente
Muchas gracias, funcionó, pero ¿cuál es el papel de 'com.android.support:design:27.0.1'
Wessam El Mahdy
19

Como ya viste todas las respuestas y comentarios anteriores, pero esta respuesta es para aclarar algo que un nuevo desarrollador podría no obtener fácilmente.

./gradlew -q aplicación de dependencias: dependencias - compilación de configuración

La línea anterior le salvará la vida sin duda, pero cómo obtener el punto exacto del resultado de la línea anterior.

Cuando obtiene el cuadro o la lista de todas las dependencias del comando anterior, debe buscar el número de versión en conflicto que obtiene en su código. por favor vea la imagen de abajo.

ingrese la descripción de la imagen aquí

en la imagen de arriba puedes ver que 23.4.0 está creando el problema pero esto no lo podemos encontrar en nuestro archivo gradle. Así que ahora este número de versión (23.4.0) nos salvará. Cuando tengamos este número, lo encontraremos en el resultado del comando anterior e importaremos directamente esa dependencia directamente en nuestro archivo gradle. Consulte la imagen a continuación para obtener una vista clara.

puede ver claramente que com.android.support:cardview-v7:23.4.0 y com.android.support:customtabs:23.4.0 están utilizando la versión que está creando el problema. Ahora simplemente copie esas líneas de la lista de dependencias y úselas explícitamente en nuestro archivo gradle pero con el enlace de la versión actualizada

implementación "com.android.support:cardview-v7:26.1.0" implementación "com.android.support:customtabs:26.1.0"

anoopbryan2
fuente
1
¡Gracias! Con las versiones más recientes de Android Studio, debería cambiarse a implementación en lugar de compilación
Avi Parshan
Sí, tienes razón @AviParshan, podemos usar compilar o api. Las dependencias que aparecen en las configuraciones de la API estarán expuestas de manera transitiva a los consumidores de la biblioteca y, como tales, aparecerán en la ruta de compilación de los consumidores. Las dependencias encontradas en la configuración de la implementación, por otro lado, no estarán expuestas a los consumidores y, por lo tanto, no se filtrarán en la ruta de compilación de los consumidores.
anoopbryan2
use ./gradlew -q aplicación de dependencias: dependencias
Sumit
15

Otra forma de resolver conflictos es forzar la versión correcta para todas las dependencias como esta:

dependencies {
            configurations.all {
                resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                    if (details.requested.group == 'com.android.support' && details.requested.name == 'support-v4') {
                        details.useVersion "27.0.2"
                    }
                }
    ...
    }

https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html

Gainder
fuente
Las reglas de resolución de dependencia son difíciles de mantener. Deben mantenerse manualmente para el número de versión y cualquier cambio en las bibliotecas de soporte implementadas. Por ejemplo, Android Studio destaca las nuevas versiones de lib disponibles, pero no interpreta estas reglas.
Manuel
12

Use support-v13 en lugar de support-v4

compile 'com.android.support:support-v13:25.2.0'
Mehmet Hanoğlu
fuente
Tengo un problema con esto: compile 'com.android.support:recyclerview-v7:25.2.0'
Crime_Master_GoGo
Exactamente el mismo error que el anterior: -> todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión Recyclerview
Crime_Master_GoGo
@Googli, escriba compileSdkVersion , buildToolsVersion y dependencias. Usé esto. No hay problemacompile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support:design:25.2.0' compile 'com.android.support:support-v13:25.2.0' compile 'com.android.support:recyclerview-v7:25.2.0'
Mehmet Hanoğlu
12

agregue esto en dependencias de nivel de aplicación

implementation 'com.android.support:asynclayoutinflater:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
Mohammad Maaz
fuente
9

Mi problema es similar al tuyo. ¡Aquí existe un error!

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

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

Ver estos ejemplos incluyen 'com.android.support:animated-vector-drawable:25.3.0' y 'com.android.support:mediarouter-v7:24.0.0'

solo agregue estos códigos en las dependencias, asegúrese de que las versiones sean las mismas.

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'
Yanbin Hu
fuente
9

Obtuve el mismo error después de agregar compile 'com.google.android.gms:play-services:10.2.4'con compilar 'com.android.support:appcompat-v7:25.3.1'.

Añadiendo animated-vector-drawabley mediarouter libssolucionado el problema.

compile 'com.google.android.gms:play-services:10.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:animated-vector-drawable:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'
Sandeep
fuente
9

Tuve esto:

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation'com.facebook.android:facebook-login:[4,5)'
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

y obtuve este error: ingrese la descripción de la imagen aquí

Las soluciones fueron fáciles: las dependencias principales eran correctas, por lo que las hojas, sin embargo, cualquier dependencia de terceros. Eliminado uno por uno hasta encontrar al culpable, ¡y resulta ser facebook! está utilizando la versión 27.0.2 de las bibliotecas de soporte de Android. Traté de agregar la versión 27.1.1 de cardview, pero tampoco funcionó, la solución aún era bastante simple.

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation('com.facebook.android:facebook-login:[4,5)'){
       // contains com.android.support:v7:27.0.2, included required com.android.support.*:27.1.1 modules
    exclude group: 'com.android.support'
   }
   implementation 'com.android.support:cardview-v7:27.1.1' // to replace facebook sdk's cardview-v7:27.0.2.
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
Sagar Patel
fuente
9

Me he enfrentado a este problema después de actualizar a Android Studio 3.4 y la versión SDK a 28.0.0. La aplicación de la dependencia a continuación resolvió el problema para mí.

    implementation 'com.android.support:exifinterface:28.0.0'
Shaon
fuente
8

Usé estos dos para resolver mi problema después de actualizar a Android Studio 2.3

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'
Aparajita Sinha
fuente
8

Tuve el mismo problema antes y obtuve la solución.

Acabo de agregar las bibliotecas que tenían la otra versión pero con la misma versión de mi support:appcompat.

Por su error, por ejemplo:

Todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión (mezclar versiones puede provocar fallas en el tiempo de ejecución). Versiones encontradas 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

* La solución es compilar las versiones de estas bibliotecas así:

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

-si otra biblioteca tuvo el mismo problema y tuvo otra versión simplemente compílela con su support:appcompatversión

Esto resolvió mi problema y espero que resuelva el tuyo.

Los mejores deseos :)

Hesham Morsy
fuente
8

Después de buscar y combinar respuestas, la versión 2018 de esta pregunta y funcionó para mí:

1) En la pestaña de navegación cámbielo a la vista del proyecto

2) Navegue a [YourProjectName] /. Idea / collections /

3) Eliminar todos los archivos que comienzan con Gradle__com_android_support_ [libraryName]

Por ejemplo: Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) En su archivo gradle, defina una variable y úsela para reemplazar el número de versión como $ {variableName}

Variable Def:

ext {
    support_library_version = '28.0.0' //use the version of choice
}

Usar variable:

implementation "com.android.support:cardview-v7:${support_library_version}"

ejemplo gradle:

dependencies {
    ext {
        support_library_version = '28.0.0' //use the version of choice
    }

    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:animated-vector-drawable:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:customtabs:${support_library_version}"
    implementation "com.android.support:cardview-v7:${support_library_version}"
    implementation "com.android.support:support-compat:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
    implementation "com.android.support:support-core-utils:${support_library_version}"
    implementation "com.android.support:support-core-ui:${support_library_version}"
    implementation "com.android.support:support-fragment:${support_library_version}"
    implementation "com.android.support:support-media-compat:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:recyclerview-v7:${support_library_version}"
    implementation "com.android.support:design:${support_library_version}"

}
Ali Karaca
fuente
1
Esta respuesta necesita más explicación. Se puede hacer creer a un lector que debe copiar y pegar todo su archivo gradle en su proyecto. Debería explicar por qué agregó la extensión y por qué configuró algunas bibliotecas de soporte para la versión de gplaysvcs, otras para la versión de supportlib y algunas no han cambiado.
jungledev
8

Muy simple con la nueva versión del estudio Android 3.x.

Simplemente copie la versión que sea menor que la versión actual y agréguela explícitamente con el mismo número de versión que la versión actual.

Ejemplo

Versiones encontradas 27.1.1, 27.1.0. Los ejemplos incluyen com.android.support:animated-vector-drawable:27.1.1 y com.android.support:exifinterface:27.1.0

Simplemente copie la versión com.android.support:exifinterface:27.1.0y cámbiela para com.android.support:exifinterface:27.1.1que sea igual a la versión actual que está utilizando y agréguela a sus dependencias gradle de la siguiente manera.

implementation 'com.android.support:exifinterface:27.1.1'

Nota: Una vez que haya terminado, no olvide hacer clic en Sincronizar ahora en la parte superior del editor.

Mahoma
fuente
7

en la actualización de 2018 para este error, agregue la implementación desde la estructura del proyecto

implementation 'com.android.support:support-v13:28.0.0'

en modo de proyecto -> Bibliotecas externas allí puede encontrar su problema, en mi caso estoy usando la versión 28 y las bibliotecas externas que encontré com.android.support:support-media-compat-26.0.0y aquí estaba el error.

después de la implementación support v13y está funcionando

Alwayss Bijoy
fuente
El subrayado rojo desapareció con esta implementación.
Truong Hieu
6

Ha definido cualquier otra dependencia para compilar con la versión en 24.0.0lugar de 25.1.1. Configure todas las versiones de dependencias igual que 25.1.1.

Sneh Pandya
fuente
He actualizado mi respuesta, todas las versiones de soporte tienen la misma versión 25.1.1
sorprendido
6

Tuve que agregar las siguientes líneas en gradle para eliminar el error

compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:preference-v7:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:cardview-v7:25.2.0'
Shrikant
fuente
6

Ejecuté tareas de ./gradlew y revisé las dependencias que eran una versión diferente de la versión objetivo (25.3.1). Obtendrás algo como esto:

app:prepareComAndroidSupportAnimatedVectorDrawable2531Library - Prepare com.android.support:animated-vector-drawable:25.3.1
app:prepareComAndroidSupportAppcompatV72531Library - Prepare com.android.support:appcompat-v7:25.3.1
app:prepareComAndroidSupportCardviewV72531Library - Prepare com.android.support:cardview-v7:25.3.1
app:prepareComAndroidSupportCustomtabs2531Library - Prepare com.android.support:customtabs:25.3.1
app:prepareComAndroidSupportDesign2531Library - Prepare com.android.support:design:25.3.1
app:prepareComAndroidSupportMediarouterV72531Library - Prepare com.android.support:mediarouter-v7:25.3.1
app:prepareComAndroidSupportPaletteV72531Library - Prepare com.android.support:palette-v7:25.3.1
app:prepareComAndroidSupportRecyclerviewV72531Library - Prepare com.android.support:recyclerview-v7:25.3.1
app:prepareComAndroidSupportSupportCompat2531Library - Prepare com.android.support:support-compat:25.3.1
app:prepareComAndroidSupportSupportCoreUi2531Library - Prepare com.android.support:support-core-ui:25.3.1
app:prepareComAndroidSupportSupportCoreUtils2531Library - Prepare com.android.support:support-core-utils:25.3.1
app:prepareComAndroidSupportSupportFragment2531Library - Prepare com.android.support:support-fragment:25.3.1
app:prepareComAndroidSupportSupportMediaCompat2531Library - Prepare com.android.support:support-media-compat:25.3.1
app:prepareComAndroidSupportSupportV42531Library - Prepare com.android.support:support-v4:25.3.1
app:prepareComAndroidSupportSupportVectorDrawable2531Library - Prepare com.android.support:support-vector-drawable:25.3.1
app:prepareComAndroidSupportTransition2531Library - Prepare com.android.support:transition:25.3.1
app:prepareComAndroidVolleyVolley100Library - Prepare com.android.volley:volley:1.0.0
app:prepareComCrashlyticsSdkAndroidAnswers1312Library - Prepare com.crashlytics.sdk.android:answers:1.3.12
app:prepareComCrashlyticsSdkAndroidBeta124Library - Prepare com.crashlytics.sdk.android:beta:1.2.4
app:prepareComCrashlyticsSdkAndroidCrashlytics267Library - Prepare com.crashlytics.sdk.android:crashlytics:2.6.7
app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2316Library - Prepare com.crashlytics.sdk.android:crashlytics-core:2.3.16
app:prepareComFacebookAndroidFacebookAndroidSdk4161Library - Prepare com.facebook.android:facebook-android-sdk:4.16.1
app:prepareComGoogleAndroidGmsPlayServicesAnalytics1026Library - Prepare com.google.android.gms:play-services-analytics:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl1026Library - Prepare com.google.android.gms:play-services-analytics-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuth1026Library - Prepare com.google.android.gms:play-services-auth:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuthBase1026Library - Prepare com.google.android.gms:play-services-auth-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBase1026Library - Prepare com.google.android.gms:play-services-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBasement1026Library - Prepare com.google.android.gms:play-services-basement:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesCast1026Library - Prepare com.google.android.gms:play-services-cast:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesLocation1026Library - Prepare com.google.android.gms:play-services-location:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesMaps1026Library - Prepare com.google.android.gms:play-services-maps:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTagmanagerV4Impl1026Library - Prepare com.google.android.gms:play-services-tagmanager-v4-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTasks1026Library - Prepare com.google.android.gms:play-services-tasks:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalytics1026Library - Prepare com.google.firebase:firebase-analytics:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalyticsImpl1026Library - Prepare com.google.firebase:firebase-analytics-impl:10.2.6
app:prepareComGoogleFirebaseFirebaseAppindexing1024Library - Prepare com.google.firebase:firebase-appindexing:10.2.4
app:prepareComGoogleFirebaseFirebaseCommon1026Library - Prepare com.google.firebase:firebase-common:10.2.6
app:prepareComGoogleFirebaseFirebaseCore1026Library - Prepare com.google.firebase:firebase-core:10.2.6
app:prepareComGoogleFirebaseFirebaseIid1026Library - Prepare com.google.firebase:firebase-iid:10.2.6
app:prepareComGoogleFirebaseFirebaseMessaging1026Library - Prepare com.google.firebase:firebase-messaging:10.2.6
app:prepareComMindorksPlaceholderview027Library - Prepare com.mindorks:placeholderview:0.2.7
app:prepareDebugAndroidTestDependencies
app:prepareDebugDependencies
app:prepareDebugUnitTestDependencies
app:prepareInfoHoang8fAndroidSegmented105Library - Prepare info.hoang8f:android-segmented:1.0.5
app:prepareIoFabricSdkAndroidFabric1316Library - Prepare io.fabric.sdk.android:fabric:1.3.16
app:prepareNoNordicsemiAndroidLog211Library - Prepare no.nordicsemi.android:log:2.1.1
app:prepareNoNordicsemiAndroidSupportV18Scanner100Library - Prepare no.nordicsemi.android.support.v18:scanner:1.0.0

En este caso, estaba apuntando a 25.3.1, y tenía algunas dependencias dirigidas a diferentes versiones cuando ejecuté este comando. El truco consiste en identificar las dependencias en esta lista que apuntan a versiones anteriores y anularlas importando la versión más reciente de la dependencia en Gradle.

Matt W
fuente
6

Tengo el mismo problema pero lo resolví agregando esas tres líneas

implementation 'com.android.support:design:27.1.1'
implementation "com.android.support:customtabs:27.1.1"
implementation 'com.android.support:mediarouter-v7:27.1.1'

ahora todo funciona perfectamente

Hamza Rahman
fuente
6

Aquí está mi flujo para arreglar esta advertencia

build.gradle

android {
    compileSdkVersion ... // must same version (ex: 26)
    ...
}

dependencies {
    ...
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)

    ...
    compile ('a library B which don't use 'com.android.support...' OR use SAME version of 'com.android.support'){
         // do nothing 
    }

    ...
    compile ('a library C which use DIFFERENT 'com.android.support...' (ex:27.0.1) { 
        // By default, if use don't do anything here your app will choose the higher com.android.support... for whole project (in this case it is 27.0.1)

        // If you want to use 26.0.1 use
        exclude group: 'com.android.support', module: '...' (ex module: 'appcompat-v7') 
        exclude group: 'com.android.support', module: 'another module'
        ...

        // If you want to use 27.0.1 do 
        Upgrade `compileSdkVersion` and all 'com.android.support' to 27.0.1.
        (It may be a good solution because the best practice is always use latest `compileSdkVersion`.  
        However, use 26 or 27 is base on you for example higher library may have bug)
    }
}

Para ver / verificar la dependenciestotalidad de la biblioteca en su aplicación
Abra la terminal y ejecute./gradlew app:dependencies

Para ver el contenido dependenciesde una biblioteca específica en su aplicación, siga el tutorial aquí: - Cómo excluir dependencias de una dependencia particular en Gradle

Espero que ayude

Phan Van Linh
fuente
5

Abra la biblioteca externa de su proyecto, verá que algunas bibliotecas aún usan la versión anterior, aunque no mencionó esas bibliotecas, por lo que mi sugerencia es que solo use la versión de biblioteca particular para aquellas que resolverán su problema.

Subho
fuente
5

Acabo de actualizar mi repositorio de soporte de Android a (revisión: 44.0.0); luego Android SDK Tools y Emulator a la última versión 25.3.1 desde sdk manager> SDK tools Y resolvió mi problema.

Ajit Thapa
fuente