it-swarm.com.de

Fehler: Konflikt mit der Abhängigkeit "com.google.code.findbugs: jsr305"

Ich habe ein neues Projekt in Android Studio 2.2 Preview 1 mit Android-App und Backend-Modul mit Google Messaging erstellt. Dies ist die App-Datei:

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')
}

Aber es gibt:

Fehler: Konflikt mit der Abhängigkeit 'com.google.code.findbugs: jsr305'. Die aufgelösten Versionen für App (1.3.9) und Test-App (2.0.1) unterscheiden sich. Siehe http://g.co/androidstudio/app-test-app-conflict für Details.

Ich bin neu bei Android und kann den Fehler nicht finden. Wie kann ich das beheben?

221
Rahul Garg

Fügen Sie im build.gradle Ihrer App Folgendes hinzu:

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

Erzwingt, dass Gradle nur die Versionsnummer kompiliert, die Sie für alle Abhängigkeiten angeben, unabhängig davon, welche Versionsnummer die Abhängigkeiten angegeben haben. 

601
gbhall

Dies ist auf Espresso zurückzuführen. Sie können den Apps build.grade Folgendes hinzufügen, um dies zu verringern.

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

METHODE 1: Ich habe das androidTestCompile auf der Espresso-Kernlinie gelöscht, das automatisch in ein neues Projekt eingefügt wurde. Dann kompiliert mein Android Studio sauber.

Das androidTestCompile befindet sich in "build.gradle (Module: app)":

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

Ich weiß nicht, ob diese Löschung irgendwann ein Problem haben wird, aber es funktioniert jetzt sicher für mein aktuelles Projekt.

Methode 2: Das Hinzufügen eines Ausschlusses für Findbugs funktioniert auch:

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

Methode 3: Erzwingen des Kompilierens mit einer bestimmten Version:

(Im Folgenden erzwinge ich die Kompilierung mit der höheren Version.)

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

Von Gradle Plugin User Guide :

Wenn Instrumentationstests ausgeführt werden, verwenden sowohl das Haupt-APK als auch das Test-APK denselben Klassenpfad. Gradle Build schlägt fehl, wenn das Haupt-APK und das Test-APK dieselbe Bibliothek (z. B. Guava) verwenden, jedoch in unterschiedlichen Versionen. Wenn gradle das nicht erkannt hat, kann sich Ihre App während der Tests und während des normalen Betriebs anders verhalten (einschließlich eines Absturzes in einem der Fälle).

Stellen Sie einfach sicher, dass beide APKs dieselbe Version verwenden, damit der Build erfolgreich ist. Wenn es sich bei dem Fehler um eine indirekte Abhängigkeit handelt (eine Bibliothek, die Sie in Ihrem build.gradle nicht erwähnt haben), fügen Sie der Konfiguration einfach eine Abhängigkeit für die neuere Version hinzu

Fügen Sie diese Zeile zu Ihren build.gradle Abhängigkeiten hinzu, um eine neuere Version für beide APKs zu verwenden:

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

Zum späteren Nachschlagen können Sie Ihre Gradle-Konsole überprüfen. Sie enthält neben dem Fehler einen hilfreichen Link, der Sie bei Gradle-Build-Fehlern unterstützt.

17
lkisac

Als ich module: 'jsr305' als zusätzliche Ausschlussanweisung hinzufügte, war alles für mich gut.

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

})

7
Wahib Ul Haq

Wie in Ihren Protokollen angegeben, besteht das Problem aus zwei Abhängigkeiten, die versuchen, verschiedene Versionen der 3. Abhängigkeit zu verwenden. Fügen Sie der App-Gradle-Datei eine der folgenden Optionen hinzu:

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

Der Grund, warum dies geschieht, ist, dass die Abhängigkeit dieselbe Version der Diff-Version verwendet.
Es gibt also 3 Schritte oder (1 Schritt), um dieses Problem zu lösen. 

1

Hinzufügen

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

zu Ihrer build.gradle-Datei in Android {...} 

2.

Offenes Terminal in Android Studio
Ausführen von ./gradlew -q app:dependencies-Befehl. 

3.

Klicken Sie in der Liste Build in der Menüleiste von Android Studio auf Clean Project.
Das Projekt wird neu erstellt und anschließend im ersten Schritt remove Code.

Vielleicht brauchst du nur den zweiten Schritt. Ich kann kein Rollback durchführen, wenn ein Fehler auftritt.

6
ElliotCui

Fügen Sie Folgendes zu den Abhängigkeiten hinzu, um die Verwendung der neuesten Version der findbugs-Bibliothek zu erzwingen:

compile 'com.google.code.findbugs:jsr305:2.0.1'
3
Ayman Al-Absi
  1. Die akzeptierte Antwort ist eine Möglichkeit, das Problem zu beheben, da es lediglich eine Strategie für die problematische Abhängigkeit anwendet (com.google.code.findbugs: jsr305) und das Problem rund um das Projekt mit einer Version dieser Abhängigkeit lösen wird. Grundsätzlich werden die Versionen dieser Bibliothek innerhalb des gesamten Projekts ausgerichtet.

  2. Es gibt eine Antwort von @Santhosh (und einigen anderen Personen), die vorschlägt, dieselbe Abhängigkeit für Espresso auszuschließen, die auf dieselbe Weise funktionieren sollte, aber wenn das Projekt andere Abhängigkeiten hat, die von derselben Bibliothek (com.google) abhängen .code.findbugs: jsr305), haben wir wieder das gleiche Problem. Um diesen Ansatz verwenden zu können, müssen Sie also dieselbe Gruppe von allen Projektabhängigkeiten ausschließen, die von com.google.code.findbugs: jsr305 abhängen. Ich persönlich fand heraus, dass Espresso Contrib und Espresso Intents auch com.google.code.findbugs: jsr305 verwenden.

Ich hoffe, dass diese Gedanken jemandem helfen werden, zu verstehen, was genau hier passiert und wie die Dinge funktionieren (nicht nur durch Kopieren, Einfügen von Code) :).

3
Sniper

espresso-Abhängigkeiten in gradle-Dateien löschen funktioniert für mich.

lösche diese Zeilen in der App Gradle-Datei:

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

Im Projekt ': app' können Sie Ihrer app/build.gradle-Datei Folgendes hinzufügen:

Android {
 configurations.all {
    resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
 }
 }
0
Diya Bhat

Für react-native-firebase hat das Hinzufügen dieses Abschnitts zu app/build.gradle Dependencies für mich funktioniert:

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}
0
Indivision Dev

REAKTIEREN NATIVE

Wenn Sie nach einer nativen Reaktionslösung suchen, schreiben Sie dieses Snippet in die betroffene Gradle-Build-Datei node_modules, z. Feuerbasis in meinem Fall.

Android {
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
    }
}
0
Faisal Hassan

ich habe versucht, den Airbnb-Deeplink-Versand zu verwenden. Ich musste auch die Findbugs-Gruppe aus dem AnnotationProcessor ausschließen. 

//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'
    }
0
j2emanue

Diejenigen, die denselben Fehler in Android 3.0.1 erhalten, können sie beheben, indem sie einfach die versions von compileSdkVersion und targetSdkVersion auf 27 aktualisieren und auch com.Android.support:appcompat-v7 implementieren : 27.1.1 'in Abhängigkeiten .

0
Arjun