我几乎尝试了书中的每一个技巧。
但似乎没有任何效果,下面是我的build.gradle。我正在使用Gradle版本1.2.3。有人可以说清楚我的代码还有什么问题。
我唯一没有尝试的是改变Gradle的版本。 这是一个非常基本的Espresso测试案例。谢谢!
apply plugin: 'com.android.application'
android {
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.rasika.job"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
testCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'com.android.support.test:rules:0.3'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0'
}
答案 0 :(得分:52)
我分叉android-topeka google sample并将appcompat版本更新为23.1.0,同样的消息:
警告:与依赖性冲突 'com.android.support:support-annotations'。已解决的应用版本 (23.1.0)和测试应用程序(23.0.1)不同。
我补充说:
androidTestCompile 'com.android.support:support-annotations:23.1.0'
现在两者都解析为23.1.0,警告消失,应用程序和测试仍然有效。
我不确定这是更好的解决方案,所以我正在寻找另一个但是找到了你的问题。
更新:阅读this good explanation by PaulR。
更新2:已确认,android-testing google sample已完成。
// Testing-only dependencies
// 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.0.1'
Update3 :Another good response by CommonsWare。
使用以下方法检查您的特定版本/冲突/解决方案:
./gradlew -q yourmodule:dependencies
在你的情况下,Appcompat是22.1.1,但是你强迫22.1.0。
<强> UPDATE4:强> 依赖性冲突在The Android Build System (Android Dev Summit 2015)解释。
Resolving conflicts between main and test APK
当运行仪器测试时,主APK和测试APK 共享相同的类路径。如果主APK和,Gradle构建将失败 测试APK使用相同的库(例如番石榴)但不同 版本。如果gradle没有抓住,你的应用程序可能会表现 在测试期间和正常运行期间(包括崩溃) 其中一个案例)。
要使构建成功,只需确保两个APK都使用相同的内容 版。 如果错误是关于间接依赖(你是一个库 没有在build.gradle中提及),只需添加一个依赖项 更新版本的配置(“compile”或“androidTestCompile”) 需要它。您还可以使用Gradle的解决策略 机制。您可以通过运行./gradlew来检查依赖关系树 :app:dependencies和./gradlew:app:androidDependencies。
答案 1 :(得分:26)
我通过添加依赖来解决冲突:
androidTestCompile 'com.android.support:support-annotations:23.2.0'
答案 2 :(得分:15)
我遇到了同样的问题,由此解决了:
// build.gradle
...
android {
...
defaultConfig {
...
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
...
androidTestCompile('com.android.support.test.espresso:espresso-core: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.3') {
// Necessary if your app targets Marshmallow (since the test runner
// hasn't moved to Marshmallow yet)
exclude group: 'com.android.support', module: 'support-annotations'
}
}
解决方案在这里找到: https://github.com/codepath/android_guides/wiki/UI-Testing-with-Espresso
更新: 最后我的build.gradle中的依赖块看起来像这样:
dependencies {
...
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:design:23.2.1'
...
// Necessary if your app targets Marshmallow (since Espresso
// hasn't moved to Marshmallow yet)
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test.espresso:espresso-intents:2.2.2') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test:runner:0.5') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test:rules:0.5') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support:support-annotations:23.2.1') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test.uiautomator:uiautomator-v18:2.1.2') {
exclude group: 'com.android.support'
}
}
答案 3 :(得分:7)
最近添加uiautomator时发生了这种情况。要解决此问题,您需要确定使用过时模块的依赖项或依赖项。你可以通过将每个 androidTestCompile 依赖包装到一个块中来实现这一点,如下所示:
androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2') {
transitive = false;
}
这个可能打破了其他一些东西,所以你需要小心。我能够确切地确定哪两个依赖项对我造成了这个问题,并且只是将这种阻塞机制添加到那些。
答案 4 :(得分:4)
我通过从runner和espresso-core依赖项中排除support-annotation库来解决冲突:
androidTestCompile 'com.android.support.test:runner:0.5',{
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'
}
答案 5 :(得分:3)
将其添加到主build.gradle:
allprojects {
...
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.1.1'
}
...
}
答案 6 :(得分:3)
将以下代码添加到build.gradle文件
中的依赖关系块compile 'com.android.support:support-annotations:23.2.1'
testCompile 'com.android.support:support-annotations:23.2.1'
androidTestCompile 'com.android.support:support-annotations:23.2.1'
答案 7 :(得分:1)
androidTestCompile更改为测试编译。并提醒不要将其更改为编译,只需将此依赖项编译到我们的调试APK或测试APK。
答案 8 :(得分:1)
对我来说这很好用
dependencies {
androidTestCompile 'com.android.support:support-annotations:23.1.1'
}
答案 9 :(得分:1)
我通过添加依赖来解决冲突:
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
...
androidTestCompile 'com.android.support:support-annotations:23.2.1'
答案 10 :(得分:0)
也陷入问题说
无法解决
com.android.support:support-annotations:23.1.0
并试图在其他服务器中找到
但解决了我的问题的是添加:
google-service.json
来自的文件
https://developers.google.com/mobile/add
并将其复制并粘贴到
中YourAndroidProject/app
然后重新编译它,我希望你的代码会飞
答案 11 :(得分:0)
用它来解决冲突
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
答案 12 :(得分:0)
我通过添加依赖来解决冲突:
androidTestCompile "com.android.support:support-annotations:26.0.0-beta1"