错误:与依赖冲突'com.google.code.findbugs:jsr305'

我创建了一个新项目在Android Studio 2.2预览与Android应用程序和后端模块谷歌消息。这是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.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的新手,无法找到这个错误是什么。我该怎么解决呢?

107820 次浏览

在应用程序的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'
}

删除浓缩咖啡依赖在gradle文件为我工作。

删除应用程序gradle文件中的这些行:

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
问题,正如在你的日志中所述,是2个依赖试图使用不同版本的第三个依赖。 在app-gradle文件中添加以下内容之一
androidTestCompile 'com.google.code.findbugs:jsr305:2.0.1'
androidTestCompile 'com.google.code.findbugs:jsr305:1.3.9'

Gradle插件用户指南:

运行插装测试时,主APK和测试APK共享相同的类路径。如果主APK和测试APK使用相同的库(例如Guava)但版本不同,Gradle构建将失败。如果gradle没有捕捉到这一点,你的应用程序可能会在测试和正常运行期间表现不同(包括在其中一种情况下崩溃)。

要使构建成功,只需确保两个apk使用相同的版本。如果错误是关于间接依赖项(一个您在build.gradle中没有提到的库),只需将新版本的依赖项添加到配置中

将这一行添加到你的build.gradle依赖项中,以使用两个apk的新版本:

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

为了将来的参考,你可以检查你的Gradle控制台,它会在错误旁边提供一个有用的链接来帮助任何gradle构建错误。

将this this添加到依赖项中,以强制使用最新版本的findbugs库:

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

当我添加module: 'jsr305'作为一个额外的排除语句时,一切都很好。

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

})

发生这种情况的原因是diff依赖使用了与diff版本相同的lib 所以,有3步或(1步)来解决这个问题。< / p >

1日

添加

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

android {...}中的build.gradle文件

2日

在android studio中打开终端
执行./gradlew -q app:dependencies命令。< / p >

3日

Build列表中的android studio菜单栏中单击Clean Project 它会重新构建项目,然后

. remove代码在第一步 也许你只需要执行第二步。发生错误时不能回滚。

< p >方法1: 我删除了espresso-core行上的androidTestCompile,它会自动包含在一个新项目中。然后我的Android Studio编译干净

androidTestCompile在build中。gradle(模块:应用)":

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'
...
}
  1. 公认的答案是解决问题的一种方法,因为它只会为有问题的依赖项应用一些策略,并且它将使用该依赖项的某个版本来解决项目周围的问题。基本上,它将在整个项目中对齐这个库的版本。

  2. @Santhosh(以及其他一些人)给出了一个答案,他们建议排除espresso的相同依赖项,这应该以相同的方式工作,但如果项目有依赖于同一库的其他依赖项(com.google.code.findbugs:jsr305),我们将再次遇到相同的问题。因此,为了使用这种方法,您需要从所有依赖于com.google.code.findbugs:jsr305的项目依赖项中排除相同的组。我个人发现Espresso Contrib和Espresso Intents也使用com.google.code.findbugs:jsr305。

我希望这些想法能帮助一些人意识到这里到底发生了什么以及事情是如何工作的(而不仅仅是复制粘贴一些代码):)。

我试图使用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中得到相同错误的人,可以通过简单地更新compileSdkVersiontargetSdkVersion到27版本来解决它,并在依赖关系中实现com.android.support:appcompat-v7:27.1.1'。

在项目“:app”中,您可以将以下内容添加到app/build中。Gradle文件:

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

反应本地

如果你在寻找react原生解决方案,那么在你受影响的node_modules gradle构建文件中写这个片段,例如,在我的例子中是firebase。

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

对于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}