错误:与依赖项冲突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
代码。
也许你只需要执行第二步。 发生错误时不能回滚。 试试。
-
接受的答案是解决这个问题的一种方法,因为它只会对有问题的依赖项(com.google.code.findbugs:jsr305)应用一些策略,并且会使用某个版本的这个依赖项来解决项目周围的问题。 基本上它将在整个项目中alignment这个库的版本。
-
有一个来自@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' }
- 在com.android.build.gradle.internal.api.ApplicationVariantImpl找不到属性'outputFile'
- AAR可以包含传递依赖吗?
- 在build.gradle文件中写评论的语法是什么?
- 错误:Gradle:执行任务失败:app:crashlyticsCleanupResourcesDebug。 > Crashlytics开发工具错误
- 错误:任务':ProjectName:mergeDebugResources'的执行失败。 >嘎吱嘎吱的Cruncher *一些文件*失败,看到日志
- :app:dexDebug ExecException用非零的退出值2结束
- Android Studio 0.4复制在APK META-INF / LICENSE.txt中复制的文件
- 如何更改每个Gradle构buildtypes的应用程序名称
- Android Gradle Project将构build工具升级到21.0.1:aapt抛出exception