Android AssertJ 1.0.0 与 Android gradle 1.1.1

Android AssertJ 1.0.0 with Android gradle 1.1.1

这是我的 build.gradle 中有冲突的部分:

...
dependencies {
  classpath 'com.android.tools.build:gradle:1.1.1'
}
...
testCompile( 'com.squareup.assertj:assertj-android:1.0.0' )
...

我在日志中看到的问题:

WARNING: Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (21.0.3) and test app (20.0.0) differ.

显然它从类路径中删除了冲突的依赖项。我不确定它是 gradle 还是 android gradle 插件。

接下来我试过了:

  testCompile( 'com.squareup.assertj:assertj-android:1.0.0' ) {
    exclude group: 'com.android.support', module: 'support-annotations'
  }

但我仍然有编译错误,所以排除了依赖。

接下来我试过了:

configurations.all {
  resolutionStrategy {
    // fail eagerly on version conflict (includes transitive dependencies)
    // e.g. multiple different versions of the same dependency (group and name are equal)
    failOnVersionConflict()

    // force certain versions of dependencies (including transitive)
    //  *append new forced modules:
    force 'com.android.support:support-annotations:21.0.3'
    //  *replace existing forced modules with new ones:
    forcedModules = ['com.android.support:support-annotations:21.0.3']
  }
}

但看起来它不起作用,因为它在第一次冲突时没有失败,而且我仍然有编译错误。

你有什么建议?

更新 删除依赖项是什么意思 - 我看到很多 assertj 未找到

的编译错误

我运行遇到了同样的问题。这为我修复了它:

testCompile('com.squareup.assertj:assertj-android:1.0.0'){
    exclude group: 'com.android.support', module:'support-annotations'
}

您需要更改:

testCompile( 'com.squareup.assertj:assertj-android:1.0.0' ) {
    exclude group: 'com.android.support', module: 'support-annotations'
}

至:

compile('com.squareup.assertj:assertj-android:1.0.0') {
    exclude group: 'com.android.support', module: 'support-annotations'
}

还要确保您的测试文件夹名为 test 而不是 androidTest

已接受的答案对我不起作用。但是,添加以下内容对我有用:

androidTestCompile 'com.android.support:support-annotations:23.0.1'

和:

testCompile 'com.android.support:support-annotations:23.0.1'

基于