与依赖'com.android.support:support-annotations'冲突.app(23.1.0)和测试app(23.0.1)的已解决版本有所不同

bar*_*arq 119 android gradle build.gradle android-gradle-plugin android-espresso

构建时我收到以下错误:

Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (23.1.0) and test app (23.0.1) differ.
Run Code Online (Sandbox Code Playgroud)

这些是我的gradle依赖项

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:design:23.1.0'
    compile 'com.android.support:cardview-v7:23.1.0'
    compile 'com.android.support:recyclerview-v7:23.1.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.squareup:otto:1.3.8'
    compile 'com.snappydb:snappydb-lib:0.5.2'
    compile 'com.esotericsoftware.kryo:kryo:2.24.0'
    compile 'com.google.dagger:dagger:2.0.1'
    apt 'com.google.dagger:dagger-compiler:2.0.1'
    compile 'javax.annotation:javax.annotation-api:1.2'
    compile 'io.reactivex:rxandroid:1.0.1'
    compile 'io.reactivex:rxjava:1.0.14'
    compile 'com.google.android.gms:play-services-location:8.1.0'
    compile 'com.google.android.gms:play-services-gcm:8.1.0'
    compile 'org.apache.commons:commons-lang3:3.4'
    testCompile 'junit:junit:4.12'
    testCompile 'org.hamcrest:hamcrest-library:1.3'
    testCompile 'org.mockito:mockito-core:1.10.19'
    androidTestCompile 'com.android.support.test:runner:0.4'
    androidTestCompile 'com.android.support.test:rules:0.4'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.1'
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Gab*_*tti 208

您可以使用以下方法强制测试中的注释库:

androidTestCompile 'com.android.support:support-annotations:23.1.0'
Run Code Online (Sandbox Code Playgroud)

像这样的东西:

  // Force usage of support annotations in the test app, since it is internally used by the runner module.
  androidTestCompile 'com.android.support:support-annotations:23.1.0'
  androidTestCompile 'com.android.support.test:runner:0.4.1'
  androidTestCompile 'com.android.support.test:rules:0.4.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1'
  androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.1'
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是在顶级文件中使用它:

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'
}
Run Code Online (Sandbox Code Playgroud)

  • 这行是解决方案:androidTestCompile'c​​om.android.support:support-annotations:23.1.0' (8认同)
  • 使用configurations.all设置对我有用,但不适用于项目级文件,这是我最初从上面的响应中解释为"顶级文件".它位于模块级build.gradle文件中 (4认同)
  • 只需要说明一点,我们需要在**模块(app)的`build.gradle`中添加configurations.all {resolutionStrategy.force'com.android.support:support-annotations:23.1.0'}. )**来解决问题. (3认同)

Sus*_*lle 69

Project Rebuild解决了我的问题.

在Android工作室的工作室中.. Build> Rebuild Project.

  • 雅,这也是另一种解决方案.谢谢. (2认同)

rex*_*xar 25

来源:CodePath - 使用Espresso进行UI测试

  1. 最后,我们需要引入Espresso依赖项并在我们的app build.gradle中设置测试运行器:
// build.gradle
...
android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    ...
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
        // Necessary if your app targets Marshmallow (since Espresso
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.android.support', module: 'support-annotations'
    }
    androidTestCompile('com.android.support.test:runner:0.5') {
        // Necessary if your app targets Marshmallow (since the test runner
        // hasn't moved to Marshmallow yet)
        exclude group: 'com.android.support', module: 'support-annotations'
    }
}
Run Code Online (Sandbox Code Playgroud)

我已将其添加到我的gradle文件中,警告消失了.

此外,如果您将任何其他依赖项列为冲突,例如support-annotations,请尝试将其从androidTestCompile依赖项中排除.


小智 12

你可以尝试使用

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

代替

androidTestCompile 'com.android.support.test:runner:0.4.1'

androidTestCompile 'com.android.support.test:rules:0.4.1'

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.1'
Run Code Online (Sandbox Code Playgroud)


Sha*_*Ali 6

我收到此错误

错误:任务':app:preDebugAndroidTestBuild'的执行失败。与项目“:app”中的依赖项“ com.android.support:support-annotations”冲突。应用(26.1.0)和测试应用(27.1.1)的已解决版本不同。有关详细信息,请参见https://d.android.com/r/tools/test-apk-dependency-conflicts.html

我在Gradle脚本下的build.gradle文件中有以下依赖项

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:support-vector-drawable:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Run Code Online (Sandbox Code Playgroud)

因此,我通过注释以下依赖项来解决它

testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
Run Code Online (Sandbox Code Playgroud)

所以我的依赖看起来像这样

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:support-vector-drawable:26.1.0'
//testImplementation 'junit:junit:4.12'
//androidTestImplementation 'com.android.support.test:runner:1.0.2'
//androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!