私は新しいプロジェクトを 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に不慣れで、このエラーが何であるか見つけることができません。どうやって直すの?
アプリのbuild.gradle
に以下を追加します。
Android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
依存関係がどのバージョン番号を指定していても、すべての依存関係について、指定したバージョン番号のみをコンパイルするようGradleに強制します。
これはエスプレッソによるものです。これを軽減するために、アプリのbuild.grade
に以下を追加することができます。
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2') {
exclude group: 'com.google.code.findbugs'
}
方法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'
...
}
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コンソール をチェックすることができます、そしてそれはどんなグラドル構築エラーでも助けるためにエラーの隣に役に立つリンクを提供するでしょう。
追加の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'
)
ログに記載されているように、問題は2つの依存関係が異なるバージョンの3rd依存関係を使用しようとしていることです。次のいずれかをapp-gradleファイルに追加してください。
androidTestCompile 'com.google.code.findbugs:jsr305:2.0.1'
androidTestCompile 'com.google.code.findbugs:jsr305:1.3.9'
これが起こる理由は、diff依存関係が同じlibの差分バージョンを使用していることです。
だから、この問題を解決するために3つのステップ、または(1つのステップ)があります。
追加する
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:2.0.1'
}
build.gradle
のAndroid {...}
ファイルへ
Androidスタジオで端末を開く./gradlew -q app:dependencies
コマンドを実行してください。
Build
リストのAndroidスタジオのメニューバーからClean Project
をクリックします。
それはプロジェクトを再構築し、そして最初のステップでremove
コードを再構築します。
たぶんあなたはちょうど第2ステップを実行する必要があります。エラーが発生したときにロールバックできません。試してみてください。
これを依存関係に追加して、最新バージョンのfindbugsライブラリーの使用を強制します。
compile 'com.google.code.findbugs:jsr305:2.0.1'
問題のある依存関係(com.google.code.findbugs:jsr305)に対して何らかの戦略を適用するだけでよく、この依存関係のいくつかのバージョンを使用して問題を解決するため、受け入れられた答えは問題を解決する1つの方法です。基本的にそれはプロジェクト全体の中でこのライブラリのバージョンを合わせるでしょう。
@Santhosh(および他の2人の人々)から、同じ方法で機能するはずの同じエスプレッソへの依存関係を除外することを提案する回答があります。ただし、プロジェクトに同じライブラリに依存する依存関係がある場合(com.google) .code.findbugs:jsr305)、ここでもまた同じ問題があります。そのため、このアプローチを使用するには、com.google.code.findbugs:jsr305に依存しているすべてのプロジェクト依存関係から同じグループを除外する必要があります。私は個人的に、Espresso ContribとEspresso Intentsもcom.google.code.findbugs:jsr305を使用していることを知りました。
この考えが誰かがここで何が起こっているのか、そして物事がどのように機能するのかを理解するのに役立つことを願っています。
gradleファイルのエスプレッソ依存関係を削除することは私にとってはうまくいきます。
アプリグラドルファイルでこれらの行を削除します。
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})
プロジェクト ':app'では、app/build.gradleファイルに以下を追加することができます。
Android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
}
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}
反応ネイティブ
反応性のあるネイティブソリューションを探しているのなら、影響を受けたnode_modules gradle buildファイルにこのスニペットを書いてください。私の場合はfirebaseです。
Android {
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.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'
}
Android 3.0.1で同じエラーになる人は、 versions of compileSdkVersion および targetSdkVersionを27 に更新するだけで解決でき、com.Androidも実装する.support:appcompat-v7:27.1.1 'in 依存関係 。