Después de actualizar a la API 22 y a la revisión 22 de la versión de soporte, 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) son diferentes.
Gradle es más indulgente, pero Android Studio, no tanto.
No tengo dependencias declaradas con 21.0.3 … ¿es una de las bibliotecas dependientes que usa 21.0.3 y Google olvidó actualizarla con el rest 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 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 (*)
El paso # 1 cuando se trata de 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 (p. Ej., gradle -q app:dependencies
de 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 conflictivas de artefactos.
El paso # 3 es decidir qué necesita ser reemplazado. Elegiste reemplazar solo el conflicto ( support-annotations
). Personalmente, me habría ido con la raíz del árbol de versiones incorrectas ( recyclerview-v7
), aunque, por lo que sé, podría no ser la mejor opción en este caso.
El paso 4 consiste en agregar la directiva de exclude
para bloquear lo que eligió en el Paso 3:
androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.0') { exclude module: 'support-annotations' }
El paso # 5 es para probar el cambio. Lo que estás haciendo es decir que espresso-contrib
tiene que lidiar con la edición 22.0.0 de support-annotations
de support-annotations
. Eso puede funcionar Eso puede no. Depende de la compatibilidad con versiones anteriores del conflicto. En este caso, support-annotations
deberían ser bastante buenas al respecto.
El paso n. ° 6 es consumir la bebida de su elección, una adecuada para su localidad y hora del día.
Lo que hice para resolverlo fue agregar la siguiente línea a mi script build.gradle
androidTestCompile 'com.android.support:support-annotations:xx.xx'
Reemplace xx.xx
con cualquier versión de las anotaciones de soporte que esté usando su aplicación, esto se mostrará en sus dependencias, o el mensaje de sincronización de Gradle como: Resolved version for app (xx.xx)
si hubiera un problema de sincronización.
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
configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:22.1.0' }
configurations.all { resolutionStrategy { force 'com.android.support:support-annotations:23.1.1' } }
Esto resolvió mi problema.
Alternativamente, puede ejecutar gradlew en Windows y ./gradlew para mac / linux esto descargará su dependencia cuando sea necesario
También me encontré con este problema, así como con otros conflictos relacionados con appcompat, y la solución que encontré fue agregar comstackciones de prueba y configurarlas en el SDK que está utilizando actualmente. En mi caso son 25, así que se ve así:
androidTestCompile 'com.android.support:support-annotations:25.+' androidTestCompile 'com.android.support:appcompat-v7:25.+' androidTestCompile 'com.android.support:support-v4:25.+' androidTestCompile 'com.android.support:recyclerview-v7:25.+' androidTestCompile 'com.android.support:design:25.+'
Además, como pueden ver, agregué la dependencia del diseño, que está relacionada con el Diseño de Material de Android.
Espero que ayude =)
para sdkversion 25
androidTestCompile 'com.android.support:support-annotations:25.2.0'
puede ejecutar gradlew en windows y ./gradlew para mac / linux esto descargará su dependencia cuando sea necesario.
Puede verificar si una de las bibliotecas tiene una dependencia en la anotación de soporte o si hay alguna biblioteca con un nombre erróneo e intente excluirla en gradle, como a continuación.
comstackr (“org.apache.maven: maven-ant-tasks: $ {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) son diferentes. Ver g.co/androidstudio/app-test-app-conflict para más detalles.
este fue el error que estaba recibiendo, así que utilicé la línea gradle anterior para solucionar el problema
Simplemente borre estas líneas en su archivo build.gradle:
androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
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, el conflicto surgió en las dependencias appcompat, recyclerview y design. Y resuelto agregando las siguientes líneas
androidTestCompile 'com.android.support:appcompat-v7:23.4.0' androidTestCompile 'com.android.support:recyclerview-v7:23.4.0' androidTestCompile 'com.android.support:design:23.4.0'
Estaba teniendo el mismo problema con 26.0.0 y 27.1.1 y, en realidad, actualizar el anterior para hacerlo funcionar más tarde.