tools - Todas las bibliotecas com.android.support deben usar exactamente la misma versión
gradle wrapper (13)
Esta pregunta ya tiene una respuesta aquí:
Cuando actualicé mi estudio de Android hoy de la versión 2.2.3 a 2.3, de repente recibí este error en mi build.gradle en la primera línea de compilación en dependencias
(No importa qué dependencia estará en primer lugar, pero siempre me dará este error):
Todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión (mezclar versiones puede provocar fallas de 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)
Esta 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 encuentro ningún uso de las versiones 24.0.0
Viene como una dependencia transitiva de una de sus otras dependencias.
Primero, sin embargo, solucione los otros problemas en su archivo
build.gradle
, ya que también pueden resolver este problema:
-
No use
+
para una versión de biblioteca. Utiliza 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
incorpora todos los servicios de Play, lo que hace que su aplicación sea mucho más grande de lo necesario y ralentiza mucho los tiempos de compilación. -
Reemplace
com.mcxiaoke.volley
con el artefacto oficial de Volley (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é solicitando, 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 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.
No puede ver los usos porque su uso es probablemente interno de otra biblioteca (como servicios de Google Play 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 enrutador de medios con la misma versión:
com.android.support:mediarouter-v7:25.2.0
Y haga eso para 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.
Debe sincronizar el gradle después de corregir la biblioteca indicada para ver la siguiente biblioteca y paquete que debe cambiar.
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''
}
}
}
}
Reemplace el ''25 .3.1 ''con la versión de la biblioteca de soporte de Android que desea usar, la versión debe estar por encima de la versión de su versión compileSdk.
El mismo problema me pasó a mí. Lo que acabo de hacer 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 eliminé mi versión anterior de la carpeta gradle.
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 la última versión en su caso reemplace las versiones de la biblioteca de soporte con 25.2.0.
Intente reemplazar la
compile ''com.google.android.gms:play-services:+''
con los paquetes específicos que está utilizando (consulte esta respuesta:
https://.com/a/42374426/3495069
)
Para desarrollar la respuesta aceptada , la resolución de dependencia adecuada para el caso de la 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 elimina la dependencia que provocó la dependencia transitiva, ahora tiene una dependencia restante que realmente no está utilizando).
Haz lo siguiente:
En su root
build.gradle
, ya debería tener
ext {
supportlib_version = ''27.1.1''
...
}
y estar usando esta propiedad en su
app/build.gradle
como
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 cada configuración, al resolver dependencias, si se trata de una lib de soporte (pero no de las multidex (puede haber más excepciones)), fuerce la versión a su versión de lib de soporte estandarizada.
Ahora, en la era de jetpack y jetifier, parece prudente emplear una variación (suponiendo que haya migrado a las versiones de androidx):
Por ejemplo, su
app/build.gradle
ahora contendrá dependencias de androidx, pero las bibliotecas que use aún pueden incorporar de forma transitiva dependencias de supportlib, que aún desea en la misma versión (es decir, 28.0.0) para que puedan ser correctamente inyectadas en el momento de la compilación .
Por lo tanto, mantenga las partes raíz
build.gradle
como están, usando
28.0.0
para
supportlib_version
.
Parece que Android Studio 2.3 requiere declarar dependencias externas explícitamente. Las dependencias son pestañas personalizadas y palette-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.
Tengo el mismo problema en Android Studio 2.3
Entonces, intento:
./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 base-rvadapter link 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 (*)
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é usando en lugar de agregar todo el paquete Play-SDK. 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.
puedes añadir
compile ''com.android.support:customtabs:25.2.0''
y haciendo clic derecho en la dependencia de gradle puede agregar las dependencias en conflicto. para mi fue
compile ''com.android.support:cardview-v7:25.2.0''
compile ''com.android.support:animated-vector-drawable:25.2.0''
Aquí se señala que agregar esta línea eliminará el error.
compile ''com.android.support:customtabs:25.2.0''