以下是我发生冲突的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']
}
}
但看起来它没有用,因为它没有在第一次冲突中失败,而且我仍然有编译错误。
你的建议是什么?
UPDATE 删除依赖是什么意思 - 我看到很多assertj
未找到的编译错误
答案 0 :(得分:7)
我遇到了同样的问题。这为我解决了这个问题:
testCompile('com.squareup.assertj:assertj-android:1.0.0'){
exclude group: 'com.android.support', module:'support-annotations'
}
答案 1 :(得分:0)
确定。 android-assertj
aar 库的问题。因此,我们需要额外的努力来确保将aar解压缩到build\intermediates
。
我很确定此功能已包含在robolectric-gradle
插件中。但它暂时不起作用。
要解决问题,我已下载android-assertj
aar 并解压缩。我将classes.jar
重命名为android-assertj.jar
(欢迎旧时代)并转移到 lib 文件夹。
我在gradle中将android-asserj
依赖替换为next:
testCompile files( 'lib/android-assertj.jar' )
testCompile 'org.assertj:assertj-core:1.6.0'
因此测试已编译并能够运行。但是失败了。
要解决此问题,我还将清单文件的位置添加到配置:
@Config( emulateSdk = 18, reportSdk = 18, manifest = "src/main/AndroidManifest.xml" )
此测试是在控制台上运行,而不是从AS运行。我现在必须用AppCompat
资源跳舞:)
快乐测试!
UPD:最新的Android gradle插件
不需要此解决方法答案 2 :(得分:0)
接受的答案对我不起作用。但是,添加以下内容对我有用:
androidTestCompile 'com.android.support:support-annotations:23.0.1'
和:
testCompile 'com.android.support:support-annotations:23.0.1'
答案 3 :(得分:-2)
您需要更改:
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