android studio

时间:2018-01-20 17:25:49

标签: java android android-studio

免责声明:这是我在Android应用开发中的第一次破解。

我正在尝试使用Google日历Android快速入门作为参考指南将Google日历集成到我的应用中。我在第4步,它告诉我用他们拥有的东西替换我的app build.gradle的内容。看到我的网页上显示了大部分内容,我只是尝试添加我没有的内容,这些内容是一些依赖项。

所以,这些是我的应用程序在build.gradle中的当前依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:design:26.+'
    compile 'com.android.support:support-vector-drawable:26.+'
    compile 'com.google.android.gms:play-services-maps:11.0.4'
    compile 'com.android.support:support-v4:26.+'
    compile 'com.android.support:recyclerview-v7:26.+'
    testCompile 'junit:junit:4.12'
}

这些是我试图添加到build.gradle中的依赖项;以下依赖项来自第4步中的Google Calendar Android快速入门。

compile 'com.google.android.gms:play-services-auth:11.0.4'
compile 'pub.devrel:easypermissions:0.3.0'
compile('com.google.api-client:google-api-client-android:1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}
compile('com.google.apis:google-api-services-calendar:v3-rev265-1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}

当我从Google的网页添加这4个依赖项时,我最终得到错误:

Error:Execution failed for task ':app:preDebugAndroidTestBuild'. Conflict with dependency 'com.google.code.findbugs:jsr305' in project ':app'. Resolved versions for app (1.3.9) and test app (2.0.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

关于我为什么会收到错误或任何解决方案的任何想法?

2 个答案:

答案 0 :(得分:0)

您收到此错误的原因是,首先src / androidTest / source set中的检测测试由所有构建变体共享。为" MyFlavor"构建测试APK时您的应用程序的变体,Gradle结合了src / androidTest /和src / androidTestMyFlavor / source集。

例如,下表显示了检测测试文件应如何驻留在与应用程序代码源集相对应的源集中。

src/main/java/Foo.java => src/androidTest/java/AndroidFooTest.java src/myFlavor/java/Foo.java => src/androidTestMyFlavor/java/AndroidFooTest.java

就像对应用程序源集一样,Gradle构建会合并并覆盖来自不同测试源集的文件。在这种情况下," androidTestMyFlavor"中的AndroidFooTest.java文件source set会覆盖" androidTest"中的版本。源集。有关如何合并源集的更多信息。

我的建议是删除所有测试依赖项和文件夹,然后再次查看构建。 首先删除这些以首先分析真正的问题。

compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

答案 1 :(得分:0)

问题是com.android.support.test.espresso:espresso-core:2.2.2正在提供com.google.code.findbugs:jsr305

的2.0.1版

您可以通过替换

来解决此问题
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

使用:

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'
})