library - install android support repository
Las versiones resueltas para la aplicaciĆ³n(22.0.0) y la aplicaciĆ³n de prueba(21.0.3) difieren (10)
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
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 (*)
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
gradle.org/docs/current/userguide/…
(p. Ej.,
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 la 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 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 probar el diablo de este cambio.
Lo que está 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 tal vez no.
Depende de la compatibilidad con versiones anteriores del conflicto.
En este caso,
support-annotations
deberían ser bastante buenas al respecto.
El Paso # 6 es consumir la bebida de su elección, una apropiada para su localidad y hora del día.
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''
}
Estaba teniendo el mismo problema con 26.0.0 y 27.1.1 y en realidad solo actualicé la primera a la posterior para que funcione.
Este es un problema común en la prueba de instrumentación como se indica here y se puede resolver simplemente agregando las dependencias para androidTestCompile dentro de build.gradle. En mi caso, surgieron conflictos en las dependencias de 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''
Lo que hice para resolverlo fue agregar la siguiente línea a mi script build.gradle
androidTestCompile ''com.android.support:support-annotations:xx.x.x''
Reemplace
xx.xx
con cualquier versión de 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)
caso de que haya un problema de sincronización.
Simplemente elimine 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''
También me encontré con este problema y 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í:
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 puede ver, agregué la dependencia de diseño, que está relacionada con Android Material Design.
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 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