Después de actualizar a API 22 y admitir lib revision 22, recibo la siguiente advertencia:
Advertencia: conflicto con la dependencia 'com.android.support:support-annotations'. Las versiones resueltas para la aplicación (22.0.0) y la aplicación de prueba (21.0.3) difieren.
Gradle en sí es más indulgente, pero Android Studio, no tanto.
No tengo dependencias declaradas con 21.0.3 ... ¿una de las bibliotecas dependientes usa 21.0.3 y Google olvidó actualizarla con el resto del lote?
Mi build.gradle
con los extras recortados
android {
compileSdkVersion 22
buildToolsVersion '22'
defaultConfig {
applicationId "com.REDACTED.android"
minSdkVersion 14
targetSdkVersion 22
renderscriptSupportModeEnabled true
versionName '1.0.0'
versionCode 100
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
signingConfig signingConfigs.release
}
debug {
minifyEnabled false
zipAlignEnabled true
signingConfig signingConfigs.debug
}
}
dependencies {
provided 'org.projectlombok:lombok:1.16.2'
googleCompile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.android.support:support-v4:22.0.0'
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:support-v13:22.0.0'
compile 'com.android.support:cardview-v7:22.0.0'
compile 'com.android.support:palette-v7:22.0.0'
compile 'com.android.support:support-annotations:22.0.0'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.10'
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.jakewharton:disklrucache:2.0.2'
compile 'com.squareup:otto:1.3.6'
compile 'com.squareup.picasso:picasso:2.5.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okio:okio:1.2.0'
compile 'com.flaviofaria:kenburnsview:1.0.6'
compile 'com.edmodo:cropper:1.0.1'
compile 'com.getbase:floatingactionbutton:1.8.0'
compile 'com.nispok:snackbar:2.10.2'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
compile 'in.srain.cube:grid-view-with-header-footer:1.0.9'
compile 'de.hdodenhof:circleimageview:1.2.2'
compile fileTree(dir: 'libs', include: '*.jar')
// Test Only Dependencies
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0'
}
Actualización: (Gracias Mark)
Parece que es espresso-contrib
+--- com.android.support.test:testing-support-lib:0.1 (*)
\--- com.android.support.test.espresso:espresso-contrib:2.0
+--- com.android.support:recyclerview-v7:21.0.3
| +--- com.android.support:support-annotations:21.0.3
| \--- com.android.support:support-v4:21.0.3
| \--- com.android.support:support-annotations:21.0.3
+--- com.android.support:support-v4:21.0.3 (*)
\--- com.android.support.test.espresso:espresso-core:2.0 (*)
android
android-support-library
copolii
fuente
fuente
dependencies
tarea Gradle puede ayudarlo a identificar al culpable: gradle.org/docs/current/userguide/…espresso-contrib
es la causa ...exclude
bloquear la edición 21.0.3 derecyclerview-v7
, tirar la edición 22.0.0 usted mismo y rezar para que sean lo suficientemente compatibles conespresso-contrib
las necesidades. Personalmente, me sorprende que mantengas la cordura con esa larga lista de dependencias ... :-)Respuestas:
El Paso # 1 cuando se trata con este tipo de cosas es sentirse cómodo con la línea de comandos Gradle.
El paso 2 es ejecutar el informe de dependencias de Gradle (por ejemplo,
gradle -q app:dependencies
desde la raíz del proyecto). Esto proporcionará el árbol ASCII como se muestra en la actualización de la pregunta, y debería ayudarlo a identificar qué está pidiendo las versiones de artefactos en conflicto.El paso 3 es decidir qué necesita ser reemplazado. Elegiste reemplazar solo el conflicto (
support-annotations
). Personalmente, habría seguido la raíz del árbol de versión incorrecta (recyclerview-v7
), aunque por lo que sé, podría no ser el mejor curso de acción en este caso.El paso 4 es agregar la
exclude
directiva para bloquear lo que eligió en el paso 3:El paso 5 es probar el diablo de este cambio. Lo que estás haciendo es decir que
espresso-contrib
tiene que ver con la edición 22.0.0 desupport-annotations
. Eso puede funcionar. Eso tal vez no. Depende de la compatibilidad con versiones anteriores del conflicto. En este caso,support-annotations
debería ser bastante bueno al respecto.El Paso # 6 es consumir la bebida de su elección, una apropiada para su localidad y hora del día.
fuente
exclude group: 'com.android.support', module: 'support-annotations'
desde que su versión generó una advertencia de "no se pueden inferir los tipos de argumentos" de gradledependencies
. Ver esta muestra de Chiu-Ki Chan.Lo que hice para resolverlo fue agregar la siguiente línea a mi script build.gradle
Reemplace
xx.x.x
con cualquier versión de anotaciones de soporte que esté usando su aplicación; esto se mostrará en sus dependencias o en el mensaje de sincronización de Gradle como:Resolved version for app (xx.x.x)
si hubiera un problema de sincronización.fuente
Junit
pero totalmente para obtenerlo, puedo hacerlo también para otras dependencias.androidTestCompile 'com.android.support:support-annotations:23.1.1'
En realidad, es un error de la nueva versión de actualización de Espresso Contrib, puede consultar esta solución alternativa: android-testing / build.gradle
fuente
androidTestCompile 'com.android.support.test:runner:0.5'
Consulte https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140
Esto resolvió mi problema.
Alternativamente, puede ejecutar gradlew en Windows y ./gradlew para mac / linux, esto descargará su dependencia cuando sea necesario
fuente
También me encontré con este problema, así como con otros conflictos relacionados con appcompat y la solución que encontré fue agregar compilaciones de prueba y configurarlas en el SDK que está utilizando actualmente. En mi caso son 25, así que se ve así:
Además, como puede ver, agregué la dependencia de diseño, que está relacionada con Android Material Design.
Espero que ayude =)
fuente
para sdkversion 25
fuente
puede ejecutar gradlew en Windows y ./gradlew para mac / linux, esto descargará su dependencia cuando sea necesario.
Puede verificar si una de las bibliotecas depende de la anotación de soporte o si alguna de las bibliotecas tiene un nombre erróneo e intentar excluirla en gradle, como se muestra a continuación.
compilar ("org.apache.maven: maven-ant-task: $ {mavenAntTaskVer} ") {excluir grupo: 'junit'}
Error: conflicto con la dependencia 'junit: junit'. Las versiones resueltas para la aplicación (3.8.1) y la aplicación de prueba (4.12) difieren. Ver g.co/androidstudio/app-test-app-conflict para más detalles.
este era el error que recibía, así que utilicé la línea de arriba para solucionar el problema
fuente
Simplemente elimine estas líneas en su archivo build.gradle:
fuente
Este es un problema común en la prueba de instrumentación como se indica aquí y se puede resolver simplemente agregando las dependencias para androidTestCompile dentro de build.gradle. En mi caso, surgieron conflictos en las dependencias de appcompat, de la vista de reciclaje y del diseño. Y resuelto agregando las siguientes líneas
fuente
Estaba teniendo el mismo problema con 26.0.0 y 27.1.1 y en realidad solo actualicé la primera a la última para que funcione.
fuente