Errore: conflitto con la dipendenza “com.google.code.findbugs: jsr305”

Ho creato un nuovo progetto in Android Studio 2.2 Anteprima 1 con app per Android e modulo di backend con Google Messaging. Questo è il file dell’app:

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.express:express-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') } 

Ma sta dando:

Errore: conflitto con la dipendenza “com.google.code.findbugs: jsr305”. Le versioni risolte per app (1.3.9) e test (2.0.1) differiscono. Vedi http://g.co/androidstudio/app-test-app-conflict per i dettagli.

Sono nuovo di Android e non riesco a trovare ciò che è questo errore. Come lo aggiusto?

Nel build.gradle della tua app aggiungi quanto segue:

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

Impone Gradle a compilare solo il numero di versione che dichiari per tutte le dipendenze, indipendentemente dal numero di versione indicato dalle dipendenze.

Ciò è dovuto al caffè express. Puoi aggiungere quanto segue al tuo app build.grade per mitigarlo.

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

METODO 1: Ho eliminato AndroidTestCompile sulla linea express-core che è stata automaticamente inclusa in un nuovo progetto. Quindi il mio Android Studio si compila pulito.

AndroidTestCompile è in “build.gradle (Modulo: app)”:

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

Non so se questa cancellazione avrà qualche problema lungo la strada, ma sicuramente funziona per il mio attuale progetto ora.

METODO 2: Anche l’aggiunta di un’esclusione su findbugs funziona:

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

METODO 3: forzare la compilazione con una versione specifica:

(Di seguito lo costringo a compilare con la versione più alta.)

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

Dal Manuale utente del plugin Gradle :

Quando vengono eseguiti i test della strumentazione, sia l’APK principale che l’APK di test condividono lo stesso percorso di class. La compilazione di Gradle fallirà se l’APK principale e l’APK di test utilizzano la stessa libreria (ad es. Guava) ma in diverse versioni. Se gradle non l’ha rilevato, la tua app potrebbe comportarsi in modo diverso durante i test e durante la normale esecuzione (incluso lo schianto in uno dei casi).

Per fare in modo che la compilazione abbia esito positivo, assicurati che entrambi gli APK utilizzino la stessa versione. Se l’errore riguarda una dipendenza indiretta (una libreria che non hai menzionato nel tuo build.gradle), aggiungi semplicemente una dipendenza per la versione più recente alla configurazione

Aggiungi questa linea alle dipendenze build.gradle per utilizzare la versione più recente per entrambi gli APK:

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

Per riferimento futuro, puoi controllare la tua Console Gradle e fornirà un collegamento utile accanto all’errore per aiutare con qualsiasi errore di generazione del gradle.

Quando ho aggiunto il module: 'jsr305' come un’ulteriore istruzione di esclusione, tutto ha funzionato bene per me.

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

})

Il problema, come indicato nei tuoi registri, è di 2 dipendenze che cercano di utilizzare versioni diverse della terza dipendenza. Aggiungi uno dei seguenti file all’app-gradle:

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

Il motivo per cui ciò accade è che la dipendenza diff usa la stessa versione di diff.
Quindi, ci sono 3 passaggi o (1 passo) per risolvere questo problema.

1 °

Inserisci

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

al tuo file build.gradle in android {...}

2 °

Terminale aperto in Android Studio
eseguire ./gradlew -q app:dependencies comando delle ./gradlew -q app:dependencies .

3 °

Fai clic su Clean Project dalla barra dei menu di Android Studio nella lista Build .
Ricostruisce il progetto e quindi remove codice nel primo passaggio.

Forse hai bisogno di eseguire il 2 ° passaggio. Non riesco a effettuare il rollback quando si verifica un errore. Provare.

Aggiungi questo alle dipendenze per forzare l’uso dell’ultima versione della libreria findbugs:

 compile 'com.google.code.findbugs:jsr305:2.0.1' 
  1. La risposta accettata è un modo per risolvere il problema, poiché applicherà solo una strategia per la dipendenza problematica (com.google.code.findbugs: jsr305) e risolverà il problema attorno al progetto, utilizzando una versione di questa dipendenza. Fondamentalmente allineerà le versioni di questa libreria all’interno dell’intero progetto.

  2. C’è una risposta da @Santhosh (e un paio di altre persone) che suggerisce di escludere la stessa dipendenza per l’express, che dovrebbe funzionare allo stesso modo, ma se il progetto ha altre dipendenze che dipendono dalla stessa libreria (com.google .code.findbugs: jsr305), di nuovo avremo lo stesso problema. Pertanto, per utilizzare questo approccio è necessario escludere lo stesso gruppo da tutte le dipendenze del progetto, che dipendono da com.google.code.findbugs: jsr305. Personalmente ho scoperto che Espresso Contrib ed Espresso Intents utilizzano anche com.google.code.findbugs: jsr305.

Spero che questo pensiero possa aiutare qualcuno a capire cosa sta succedendo esattamente qui e come funzionano le cose (non solo copia incolla del codice) :).

eliminare le dipendenze dell’express nel file gradle funziona per me.

cancella quelle linee nel file gradle app:

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

Stavo cercando di usare airbnb e ho ricevuto questo errore. Ho dovuto anche escludere il gruppo findbugs da 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' } 

Coloro che ricevono lo stesso errore in Android 3.0.1, possono risolverlo semplicemente aggiornando le versioni di compileSdkVersion e targetSdkVersion a 27 e implementando anche com.android.support:appcompat-v7:27.1.1 ‘nelle dipendenze .