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