studio librerias configurar android testing dependencies android-support-library

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.