android-studio gradle google-cloud-messaging android-gradle build.gradle

android studio - Error: conflicto con la dependencia ''com.google.code.findbugs: jsr305''



android-studio gradle (15)

Creé un nuevo proyecto en Android Studio 2.2 Preview 1 con la aplicación de Android y el módulo Backend con Google Messaging. Este es el archivo de la aplicación:

apply plugin: ''com.android.application'' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.xxx.xxx" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } } } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile ''com.android.support:appcompat-v7:23.4.0'' compile ''com.android.support.constraint:constraint-layout:1.0.0-alpha1'' compile ''com.google.android.gms:play-services-gcm:9.0.0'' testCompile ''junit:junit:4.12'' androidTestCompile ''com.android.support.test.espresso:espresso-core:2.2.2'' androidTestCompile ''com.android.support.test:runner:0.5'' androidTestCompile ''com.android.support:support-annotations:23.4.0'' compile project(path: '':backend'', configuration: ''android-endpoints'') }

Pero está dando:

Error: conflicto con la dependencia ''com.google.code.findbugs: jsr305''. Las versiones resueltas para la aplicación (1.3.9) y la aplicación de prueba (2.0.1) difieren. Ver http://g.co/androidstudio/app-test-app-conflict para más detalles.

Soy nuevo en Android y no puedo encontrar cuál es este error. ¿Cómo lo soluciono?


  1. La respuesta aceptada es una forma de solucionar el problema, ya que solo aplicará alguna estrategia para la dependencia problemática (com.google.code.findbugs: jsr305) y resolverá el problema en torno al proyecto, utilizando alguna versión de esta dependencia. Básicamente alineará las versiones de esta biblioteca dentro de todo el proyecto.

  2. Hay una respuesta de @Santhosh (y otras personas) que sugiere excluir la misma dependencia para el espresso, que debería funcionar de la misma manera, pero si el proyecto tiene otras dependencias que dependen de la misma biblioteca (com.google .code.findbugs: jsr305), nuevamente tendremos el mismo problema. Entonces, para usar este enfoque, deberá excluir el mismo grupo de todas las dependencias del proyecto, que dependen de com.google.code.findbugs: jsr305. Personalmente, descubrí que Espresso Contrib y Espresso Intents también usan com.google.code.findbugs: jsr305.

Espero que estos pensamientos ayuden a alguien a darse cuenta de lo que está sucediendo exactamente aquí y cómo funcionan las cosas (no solo copiar y pegar algún código) :).


Agregue esto a las dependencias para forzar el uso de la última versión de la biblioteca findbugs:

compile ''com.google.code.findbugs:jsr305:2.0.1''


Aquellos que obtienen el mismo error en Android 3.0.1, pueden resolverlo simplemente actualizando las versiones de compileSdkVersion y targetSdkVersion a 27 y también Implemente com.android.support:appcompat-v7:27.1.1 ''en dependencias .


Cuando agregué el module: ''jsr305'' como una declaración de exclusión adicional, todo funcionó bien para mí.

configurations.all { resolutionStrategy.force ''com.google.code.findbugs:jsr305:2.0.1'' }

})


De la Guía del usuario de Gradle Plugin :

Cuando se ejecutan las pruebas de instrumentación, tanto el APK principal como el APK de prueba comparten el mismo classpath. La construcción de Gradle fallará si el APK principal y el APK de prueba usan la misma biblioteca (por ejemplo, Guava) pero en versiones diferentes. Si Gradle no entendió 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úrese 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

Agregue esta línea a sus dependencias build.gradle para usar una versión más nueva para ambos APK:

compile(''com.google.code.findbugs:jsr305:2.0.1'')

Para referencia futura, puede verificar su consola Gradle y le proporcionará un enlace útil junto al error para ayudarlo con cualquier error de construcción de Gradle.


El problema, como se indica en sus registros, son 2 dependencias que intentan usar diferentes versiones de la tercera dependencia. Agregue uno de los siguientes al archivo app-gradle:

androidTestCompile ''com.google.code.findbugs:jsr305:2.0.1'' androidTestCompile ''com.google.code.findbugs:jsr305:1.3.9''


Eliminar dependencias de espresso en el archivo Gradle me funciona.

eliminar esas líneas en el archivo gradle de la aplicación:

androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', { exclude group: ''com.android.support'', module: ''support-annotations'' })


En build.gradle su aplicación, agregue lo siguiente:

android { configurations.all { resolutionStrategy.force ''com.google.code.findbugs:jsr305:1.3.9'' } }

Hace que Gradle solo compile el número de versión que establezca para todas las dependencias, sin importar qué número de versión hayan indicado las dependencias.


En el proyecto '': aplicación'' puede agregar lo siguiente a su archivo app / build.gradle:

android { configurations.all { resolutionStrategy.force ''com.google.code.findbugs:jsr305:1.3.9'' } }


Estaba tratando de usar el despacho de enlace profundo de airbnb y obtuve este error. También tuve que excluir el grupo findbugs del AnnotationProcessor.

//airBnb compile (''com.airbnb:deeplinkdispatch:3.1.1''){ exclude group:''com.google.code.findbugs'' } annotationProcessor (''com.airbnb:deeplinkdispatch-processor:3.1.1''){ exclude group:''com.google.code.findbugs'' }


Esto se debe al espresso. Puede agregar lo siguiente a sus aplicaciones build.grade para mitigar esto.

androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'') { exclude group: ''com.google.code.findbugs'' }


La razón por la que esto sucede es que la dependencia de diff usa la misma lib de la versión de diff.
Entonces, hay 3 pasos o (1 paso) para resolver este problema.

Primero

Añadir

androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', { exclude group: ''com.android.support'', module: ''support-annotations'' exclude module: ''jsr305''

a su archivo build.gradle en android {...}

2do

Abrir terminal en android studio
ejecute ./gradlew -q app:dependencies comando de ./gradlew -q app:dependencies .

3ro

Haga clic en Clean Project en la barra de menú de Android Studio en la lista de Build .
Reconstruirá el proyecto y luego remove código en el primer paso.

Tal vez solo necesites un segundo paso ejecutivo. No puedo retroceder cuando se produce un error. Pruebalo.


MÉTODO 1: eliminé androidTestCompile en la línea espresso-core que se incluyó automáticamente en un nuevo proyecto. Entonces mi Android Studio compila limpio.

AndroidTestCompile está en "build.gradle (Módulo: aplicación)":

dependencies { ... androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', { exclude group: ''com.android.support'', module: ''support-annotations'' }) ... }

No sé si esta eliminación tendrá algún problema en el futuro, pero seguramente ahora funciona para mi proyecto actual.

MÉTODO 2: Agregar una exclusión en findbugs también funciona:

dependencies { ... androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', { exclude group: ''com.android.support'', module: ''support-annotations'' exclude group: ''com.google.code.findbugs'' }) ... }

MÉTODO 3: Forzar la compilación con una versión específica:

(A continuación, lo obligo a compilar con la versión superior).

dependencies { ... androidTestCompile ''com.google.code.findbugs:jsr305:3.0.0'' ... }


Para react-native-firebase , agregar esto a la sección de dependencias app/build.gradle hizo funcionar para mí:

implementation(''com.squareup.okhttp3:okhttp:3.12.1'') { force = true } implementation(''com.squareup.okio:okio:1.15.0'') { force = true } implementation(''com.google.code.findbugs:jsr305:3.0.2'') { force = true}


REACT NATIVE

Si está buscando una solución nativa de reacción, escriba este fragmento en el archivo de compilación gradle de node_modules afectado, por ejemplo, firebase en mi caso.

android { configurations.all { resolutionStrategy.force ''com.google.code.findbugs:jsr305:3.0.0'' } }