エラー:依存関係「com.google.code.findbugs:jsr305」との競合


241

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を使い始めたばかりですが、このエラーを見つけることができません。どうすれば修正できますか?

回答:


641

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

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

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


57
このスニペットを説明すると役立つ場合があります。
Andrew Gallasch 2016

18
@Andyは、Gradleにどのバージョンをコンパイルするかを明示的に通知します(依存関係の状態のバージョン番号に関係なく)... vの強制2.0.1も機能します(どちらのバージョンも強制的に同一にする必要があります)。
Martin Zeitler、2016

2
@MartinZeitlerですが、この問題がどこから発生したのかは実際には説明されていません。私は今日、testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'でこの問題を抱えています
fralbo 2018年

1
トンありがとう。これは、3年半後も本当に役に立ちます。;)
Kartik

1
@Kartik haha​​ jeeze、久しぶり!心配しないでください、ありがとう、それが役に立てば幸いです!私の長い😊Androidの開発を停止したが、私は1日、私は再びそれを拾うだろうと確信していました
gbhall

170

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

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

1
機能していません。回答に設定されている質問が機能します。
Warpzit 2017年

2
@Warpzit-これは私にとってはうまくいきました(受け入れられた回答もそうでした)。
テッドホップ

@TedHopp実際に何か他のことをしてしまいました。YouTube APIのGradleコンパイルに問題があったため、代わりにlib jarを使用しました。
Warpzit 2017年

2
これはおそらく誰もが探している答えです。ほとんどの場合、Android StudioはデフォルトでEspressoを依存関係リストに含めており、他のライブラリと一緒に使用するには、いくつかを除外する必要があります。@Santhoshの発言とは別に、私もexclude group: 'com.android.support', module: 'support-annotations'
milosmns

1
まあ私はandroidTestCompile( 'com.android.support.test.espresso:espresso-core:2.2.2'){exclude group: 'com.google.code.findbugs'}を削除しただけで動作しました:Dは主にあなたの修正は、一部の人々がすでに持っているということです* androidTestCompile( 'com.android.support.test.espresso:espresso-core:2.2.2'、{exclude group: 'com.android.support'、module: 'support-annotations' })* gradleファイルにこのようなものを追加し、別の除外を追加すると、例外がスローされます。すべての雹Gradleスクリプト、まだ
賛成票

31

方法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'
    ...
}

バージョンの更新があります:androidTestCompile 'com.google.code.findbugs:jsr305:3.0.1'
Insoft

18

以下からのGradleプラグインユーザガイド

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

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

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

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

今後の参考のために、Gradle Consoleを確認してくださいをビルドのエラーに役立つエラーの横に役立つリンクが表示されます。


8

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

第一

追加

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

あなたのbuild.gradleファイルにandroid {...}

2番目

Android Studio
Runでターミナルを開く./gradlew -q app:dependenciesコマンドでます。

第三

リストClean Project内のandroid studioのメニューバーからクリックしますBuild
プロジェクトを再構築し、次に remove最初のステップでコーディングします。

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


7

module: 'jsr305'excludeステートメントとして追加したところ、すべてうまくいきました。

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

})


6

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

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

4
  1. 受け入れられた回答は問題を修正する1つの方法です。問題のある依存関係(com.google.code.findbugs:jsr305)に何らかの戦略を適用するだけであり、この依存関係のいくつかのバージョンを使用してプロジェクトに関する問題を解決します。基本的には、プロジェクト全体の中でこのライブラリのバージョンを揃えます。

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

この考えが誰かがここで正確に何が起こっているか、そして物事がどのように機能するかを理解するのに役立つことを願っています(単にコードをコピーして貼り付けるだけではありません):)。


3

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

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

2

Gradleファイルのエスプレッソ依存関係を削除すると、うまくいきます。

アプリのgradleファイルでそれらの行を削除します:

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

3
espressoの依存関係を削除しただけではアプリをテストできなくなるため、このソリューションは明らかに機能しません。
ハインリヒ

1

Android 3.0.1で同じエラーが発生する場合は、 compileSdkVersiontargetSdkVersionのバージョンを27に更新し、依存関係に com.android.support:appcompat-v7:27.1.1 'を実装するだけで解決できます。


1

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

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

1

以下のために反応するネイティブ・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}

{force = true}フラグを目にしたのはこれが初めてです。私はそれを試しました、そしてそれは私のためにすぐに働きました。追加したライブラリの依存関係がv1.1.0に設定されているため、プロジェクトでandroidx.appcompatをv1.0.2に維持する必要がありました。
MikeOscarEcho

0

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

リアクトネイティブ

反応ネイティブソリューションを探している場合は、影響を受けるnode_modules gradleビルドファイル(この例ではfirebase)にこのスニペットを記述します。

android {
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.0'
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.