web-dev-qa-db-ja.com

エラー:依存関係「com.google.code.findbugs:jsr305」と競合しています

私は新しいプロジェクトを Android Studio 2.2 Preview 1 に作成し、AndroidアプリケーションとバックエンドモジュールをGoogleメッセージングに組み込みました。これはアプリファイルです。

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

しかしそれは与えている:

エラー:依存関係 'com.google.code.findbugs:jsr305'と競合しています。アプリ(1.3.9)とテストアプリ(2.0.1)の解決バージョンは異なります。詳細は http://g.co/androidstudio/app-test-app-conflict を参照してください。

私はAndroidに不慣れで、このエラーが何であるか見つけることができません。どうやって直すの?

229
Rahul Garg

アプリのbuild.gradleに以下を追加します。

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

依存関係がどのバージョン番号を指定していても、すべての依存関係について、指定したバージョン番号のみをコンパイルするようGradleに強制します。

611
gbhall

これはエスプレッソによるものです。これを軽減するために、アプリのbuild.gradeに以下を追加することができます。

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

方法1:私は自動的に新しいプロジェクトに含まれていたespresso-coreラインのandroidTestCompileを削除しました。それから私のAndroid Studioはきれいにコンパイルされます。

AndroidTestCompileは "build.gradle(Module:app)"にあります。

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

この削除によって問題が発生するかどうかはわかりませんが、現在のプロジェクトでは確実に機能します。

方法2:findbugsに除外を追加することもできます。

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

方法3:特定のバージョンで強制的にコンパイルする

(以下では、より高いバージョンでコンパイルするよう強制しています。)

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

From Gradleプラグインユーザーガイド

インストルメンテーションテストを実行すると、メインAPKとテストAPKの両方が同じクラスパスを共有します。メインAPKとテストAPKが同じライブラリ(たとえば、Guava)を使用しているがバージョンが異なる場合、Gradleのビルドは失敗します。 gradleがそれをキャッチしなかった場合、テスト中と通常の実行中(どちらかのケースでのクラッシュを含む)には、アプリの動作が異なる可能性があります。

ビルドを成功させるには、両方のAPKが同じバージョンを使用していることを確認してください。エラーが間接的な依存関係(build.gradleで言及していないライブラリ)に関するものである場合は、新しいバージョンの依存関係を設定に追加するだけです。

両方のAPKに新しいバージョンを使用するには、この行を build.gradle の依存関係に追加します。

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

今後の参考のために、あなたはあなたの Gradleコンソール をチェックすることができます、そしてそれはどんなグラドル構築エラーでも助けるためにエラーの隣に役に立つリンクを提供するでしょう。

17
lkisac

追加のexcludeステートメントとしてmodule: 'jsr305'を追加したとき、それはすべて私にとってうまくいきました。

 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

ログに記載されているように、問題は2つの依存関係が異なるバージョンの3rd依存関係を使用しようとしていることです。次のいずれかをapp-gradleファイルに追加してください。

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

これが起こる理由は、diff依存関係が同じlibの差分バージョンを使用していることです。
だから、この問題を解決するために3つのステップ、または(1つのステップ)があります。

1日

追加する

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

build.gradleAndroid {...}ファイルへ

第二

Androidスタジオで端末を開く
./gradlew -q app:dependenciesコマンドを実行してください。

3日

BuildリストのAndroidスタジオのメニューバーからClean Projectをクリックします。
それはプロジェクトを再構築し、そして最初のステップでremoveコードを再構築します。

たぶんあなたはちょうど第2ステップを実行する必要があります。エラーが発生したときにロールバックできません。試してみてください。

6
ElliotCui

これを依存関係に追加して、最新バージョンのfindbugsライブラリーの使用を強制します。

compile 'com.google.code.findbugs:jsr305:2.0.1'
3
Ayman Al-Absi
  1. 問題のある依存関係(com.google.code.findbugs:jsr305)に対して何らかの戦略を適用するだけでよく、この依存関係のいくつかのバージョンを使用して問題を解決するため、受け入れられた答えは問題を解決する1つの方法です。基本的にそれはプロジェクト全体の中でこのライブラリのバージョンを合わせるでしょう。

  2. @Santhosh(および他の2人の人々)から、同じ方法で機能するはずの同じエスプレッソへの依存関係を除外することを提案する回答があります。ただし、プロジェクトに同じライブラリに依存する依存関係がある場合(com.google) .code.findbugs:jsr305)、ここでもまた同じ問題があります。そのため、このアプローチを使用するには、com.google.code.findbugs:jsr305に依存しているすべてのプロジェクト依存関係から同じグループを除外する必要があります。私は個人的に、Espresso ContribとEspresso Intentsもcom.google.code.findbugs:jsr305を使用していることを知りました。

この考えが誰かがここで何が起こっているのか、そして物事がどのように機能するのかを理解するのに役立つことを願っています。

3
Sniper

gradleファイルのエスプレッソ依存関係を削除することは私にとってはうまくいきます。

アプリグラドルファイルでこれらの行を削除します。

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

プロジェクト ':app'では、app/build.gradleファイルに以下を追加することができます。

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

react-native-firebaseの場合、これをapp/build.gradle依存関係セクションに追加すると機能しました:

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

反応ネイティブ

反応性のあるネイティブソリューションを探しているのなら、影響を受けたnode_modules gradle buildファイルにこのスニペットを書いてください。私の場合はfirebaseです。

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

私はairbnbのディープリンクディスパッチを使用しようとしていて、このエラーを得ました。私はまたannotationProcessorからfindbugsグループを除外しなければなりませんでした。

//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

Android 3.0.1で同じエラーになる人は、 versions of compileSdkVersion および targetSdkVersionを27 に更新するだけで解決でき、com.Androidも実装する.support:appcompat-v7:27.1.1 'in 依存関係

0
Arjun