我创建了一个新的项目在Android Studio 2.2预览1与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的新手,无法找到这个错误是什么。我该怎么解决呢?


当前回答

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

其他回答

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

1st

Add

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

适合你的身材。Gradle文件在android{…}

2nd

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

3rd

在Build列表中的android studio菜单栏中单击Clean Project。 它会重新构建项目,然后 在第一步中删除代码。

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

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

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

})

在应用程序的构建中。Gradle添加以下内容:

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

强制Gradle只编译你为所有依赖项声明的版本号,不管依赖项声明的是哪个版本号。

从Gradle插件用户指南:

When instrumentation tests are run, both the main APK and test APK share the same classpath. Gradle build will fail if the main APK and the test APK use the same library (e.g. Guava) but in different versions. If gradle didn't catch that, your app could behave differently during tests and during normal run (including crashing in one of the cases). To make the build succeed, just make sure both APKs use the same version. If the error is about an indirect dependency (a library you didn't mention in your build.gradle), just add a dependency for the newer version to the configuration

将这一行添加到构建中。gradle依赖使用更新版本的apk:

收集(“com.google.code.findbugs: jsr305:2.0.1')

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

这是由于浓缩咖啡。你可以将以下内容添加到你的应用构建中。分级来减轻这一点。

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