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

我在Android Studio 2.2预览版1中使用Android应用程序和使用Google消息传递的后端模块创build了一个新项目。 这是应用程序文件

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)和testing应用程序(2.0.1)的已解决版本不同。 有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict 。

我是新来的android和无法find这个错误是什么。

在您的应用程序的build.gradle添加以下内容:

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

强制Gradle只编译你为所有依赖项声明的版本号,不pipe依赖关系已经声明了哪个版本号。

这是由于浓咖啡。 您可以将以下内容添加到您的应用程序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' ... } 

从Gradle插件用户指南 :

当仪器testing运行时,主APK和testingAPK共享相同的类path。 如果主APK和testingAPK使用相同的库(例如Guava),但是在不同版本中,Gradle构build将失败。 如果gradle没有捕捉到,那么在testing和正常运行期间(包括崩溃),您的应用可能会有不同的performance。

为了使构build成功,请确保两个APK使用相同的版本。 如果错误是关于一个间接依赖(一个你没有在你的build.gradle中提到过的库),只需要添加一个新版本的依赖到configuration

将这一行添加到您的build.gradle依赖关系中,以便为这两个APK使用较新的版本:

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

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

当我添加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个依赖,试图使用不同版本的第三个依赖。 将下列其中一项添加到应用程序gradle文件中:

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

把这添加到依赖关系来强制使用最新版本的findbugs库:

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

这种情况发生的原因是diff的依赖使用diff版本的相同的lib。
所以,有三个步骤或(一步)来解决这个问题。

1

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

到你的build.gradle文件在android {...}

第2

在android studio中打开terminal
运行./gradlew -q app:dependencies命令。

第3

Build列表中单击android studio菜单栏中的Clean Project
它将重build项目,然后在第一步中remove代码。

也许你只需要执行第二步。 发生错误时不能回滚。 试试。

  1. 接受的答案是解决这个问题的一种方法,因为它只会对有问题的依赖项(com.google.code.findbugs:jsr305)应用一些策略,并且会使用某个版本的这个依赖项来解决项目周围的问题。 基本上它将在整个项目中alignment这个库的版本。

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

我希望这个想法能够帮助人们认识到这里发生了什么,以及如何工作(不只是复制粘贴一些代码):)。

删除Gradle文件中的espresso依赖关系。

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

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

我试图使用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' }