librerias - implementation project android studio
Advertencia: Conflicto con la dependencia ''com.android.support:support-annotations'' (13)
He probado casi todos los trucos en el libro.
- ResolutionStrategy.force
- Excluyendo módulos
Pero nada parece funcionar, a continuación está mi build.gradle. Estoy usando la versión 1.2.3 de Gradle. ¿Alguien puede arrojar luz sobre qué más podría estar mal con mi código?
Lo único que no he intentado es cambiar la versión de Gradle. Es un caso de prueba Espresso muy básico. ¡Gracias!
apply plugin: ''com.android.application''
android {
configurations.all {
resolutionStrategy.force ''com.android.support:support-annotations:22.1.0''
}
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.rasika.job"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
compile ''com.android.support:appcompat-v7:22.1.1''
testCompile ''junit:junit:4.12''
androidTestCompile ''com.android.support.test:runner:0.3''
androidTestCompile ''com.android.support.test:rules:0.3''
androidTestCompile ''com.android.support.test.espresso:espresso-core:2.2''
androidTestCompile ''com.android.support.test.uiautomator:uiautomator-v18:2.1.1''
androidTestCompile ''com.android.support.test.espresso:espresso-contrib:2.0''
}
Agregue códigos de seguimiento a su bloque de dependencia en el archivo build.gradle
compile ''com.android.support:support-annotations:23.2.1''
testCompile ''com.android.support:support-annotations:23.2.1''
androidTestCompile ''com.android.support:support-annotations:23.2.1''
Agregue esto a su build.gradle principal:
allprojects {
...
configurations.all {
resolutionStrategy.force ''com.android.support:support-annotations:23.1.1''
}
...
}
Bifurqué la muestra de android-topeka google y actualicé la versión de appcompat a 23.1.0, el mismo mensaje:
Advertencia: Conflicto con la dependencia ''com.android.support:support-annotations''. Las versiones resueltas para la aplicación (23.1.0) y la aplicación de prueba (23.0.1) son diferentes.
Yo añadí:
androidTestCompile ''com.android.support:support-annotations:23.1.0''
Ahora ambos resuelven a 23.1.0, la advertencia ya no existe y la aplicación y las pruebas aún funcionan.
No estoy seguro de que sea la mejor solución, entonces estoy buscando otra, pero encontré tu pregunta.
Actualización: lea esta buena explicación de PaulR .
Update2: confirmada, la muestra de google de android-testing lo hace.
// Testing-only dependencies
// Force usage of support annotations in the test app, since it is internally used by the runner module.
androidTestCompile ''com.android.support:support-annotations:23.0.1''
Actualización3 : Otra buena respuesta de CommonsWare .
Comprueba tus versiones / conflictos / resoluciones específicos usando:
./gradlew -q yourmodule:dependencies
Appcompat es 22.1.1 en su caso pero está forzando 22.1.0.
Actualización4: conflicto de dependencia explicado en The Android Build System (Android Dev Summit 2015) .
Resolviendo conflictos entre el APK principal y el de prueba
Cuando se ejecutan pruebas de instrumentación, tanto el APK principal como el APK de prueba comparten el mismo classpath. La compilación de Gradle fallará si la APK principal y la APK de prueba usan la misma biblioteca (p. Ej., Guava) pero en versiones diferentes. Si gradle no captó eso, su aplicación podría comportarse de manera diferente durante las pruebas y durante la ejecución normal (incluido el bloqueo en uno de los casos).
Para que la compilación tenga éxito, solo asegúrate de que ambos APK utilicen la misma versión. Si el error se trata de una dependencia indirecta (una biblioteca que no mencionó en su build.gradle), simplemente agregue una dependencia para la versión más nueva a la configuración ("compilar" o "androidTestCompile") que lo necesite. También puede usar el mecanismo de estrategia de resolución de Gradle. Puede inspeccionar el árbol de dependencias ejecutando ./gradlew: app: dependence y ./gradlew: app: androidDependencies.
Esto me sucedió recientemente al agregar el uiautomator. Para solucionar este problema, debe averiguar qué dependencias o dependencias está usando el módulo desactualizado. Puedes hacer esto al envolver cada dependencia androidTestCompile en un bloque, así:
androidTestCompile (''com.android.support.test.espresso:espresso-core:2.2'') {
transitive = false;
}
Sin embargo, esto podría romper algunas otras cosas, así que debes tener cuidado. Pude identificar exactamente cuáles de las dos dependencias me estaban causando este problema, y simplemente agregué este mecanismo de bloqueo a esas.
Para mí esto funcionó bien
dependencies {
androidTestCompile ''com.android.support:support-annotations:23.1.1''
}
Resolví el conflicto agregando dependencia:
androidTestCompile "com.android.support:support-annotations:26.0.0-beta1"
Resolví el conflicto agregando dependencia:
androidTestCompile ''com.android.support:support-annotations:23.2.0''
Resolví el conflicto agregando dependencia:
compile ''com.android.support:appcompat-v7:23.2.1''
compile ''com.android.support:design:23.2.1''
...
androidTestCompile ''com.android.support:support-annotations:23.2.1''
Resolví el conflicto excluyendo la biblioteca de anotaciones de soporte de las dependencias runner y espresso-core:
androidTestCompile ''com.android.support.test:runner:0.5'',{
exclude group: ''com.android.support'', module: ''support-annotations''
}
androidTestCompile (''com.android.support.test.espresso:espresso-core:2.2.2''){
exclude group: ''com.android.support'', module: ''support-annotations''
}
También entró en el problema diciendo
No se pudo resolver
com.android.support:support-annotations:23.1.0
e intenté encontrar en otros servidores,
Pero lo que resolvió mi problema es agregar:
google-service.json
archivo de
https://developers.google.com/mobile/add
y copiar y pegarlo en
YourAndroidProject/app
Luego recompile y espero que su código volará
Tuve el mismo problema, resuelto por esto:
// build.gradle
...
android {
...
defaultConfig {
...
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
...
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2'') {
// Necessary if your app targets Marshmallow (since Espresso
// hasn''t moved to Marshmallow yet)
exclude group: ''com.android.support'', module: ''support-annotations''
}
androidTestCompile(''com.android.support.test:runner:0.3'') {
// Necessary if your app targets Marshmallow (since the test runner
// hasn''t moved to Marshmallow yet)
exclude group: ''com.android.support'', module: ''support-annotations''
}
}
la solución se encontró aquí: https://github.com/codepath/android_guides/wiki/UI-Testing-with-Espresso
ACTUALIZACIÓN: finalmente el bloque de dependencias en mi build.gradle se ve así:
dependencies {
...
compile ''com.android.support:appcompat-v7:23.2.1''
compile ''com.android.support:support-v4:23.2.1''
compile ''com.android.support:design:23.2.1''
...
// Necessary if your app targets Marshmallow (since Espresso
// hasn''t moved to Marshmallow yet)
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'') {
exclude group: ''com.android.support''
}
androidTestCompile(''com.android.support.test.espresso:espresso-intents:2.2.2'') {
exclude group: ''com.android.support''
}
androidTestCompile(''com.android.support.test:runner:0.5'') {
exclude group: ''com.android.support''
}
androidTestCompile(''com.android.support.test:rules:0.5'') {
exclude group: ''com.android.support''
}
androidTestCompile(''com.android.support.test.espresso:espresso-contrib:2.2.2'') {
exclude group: ''com.android.support''
}
androidTestCompile(''com.android.support:support-annotations:23.2.1'') {
exclude group: ''com.android.support''
}
androidTestCompile(''com.android.support.test.uiautomator:uiautomator-v18:2.1.2'') {
exclude group: ''com.android.support''
}
}
Use esto para resolver conflictos
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
androidTestCompile change to test Compile. Y recuerde que no debe cambiarlo para compilar, solo necesita que estas dependencias se compilen en nuestra APK de depuración o prueba.