Conflict with dependency ‘com.android.support:support-annotations’解决方案

今天同步项目的时候,Android报了Conflict with dependency ‘com.android.support:support-annotations’的错误,于是在这里记录一下:

完整的错误如下:

Error:Execution failed for task ':app:preDebugAndroidTestBuild'.
Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (25.3.1) and test app (25.4.0) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

根据错误提示,可以知道com.android.support:support-annotations依赖冲突了,App是25.3.1,而test APP是25.4.0
于是按照网上的教程,添加以下依赖:

dependencies {androidTestCompile 'com.android.support:support-annotations:25.4.0'
}

Sync以后,结果发现并没有什么卵用,依然报上述的错误.

有效的解决方案

最后在StackOverflow上找到了有效的解决方案:
1. 强行指定依赖.Android studio你个抖M,看来需要来点硬♂的.

dependencies {configurations.all {resolutionStrategy.force 'com.android.support:support-annotations:25.4.0'}
}
  1. 如果你不喜欢来硬♂的,也有第二种解决方式,使用以下依赖:
dependencies {testImplementation 'junit:junit:4.12'androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})
}

替换:

androidTestCompile 'com.android.support.test:runner:1.0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.1'

如果你只是想解决上面个问题,就可以右上角点×了,以下纯属我瞎JB乱扯:

由于之前的项目,由于不懂事,觉得测试用例没什么卵用,就删了!以下是重新为项目引入Android Unit Test和Android Instrument Test支持.

说明

  • Android Unit Test: 可以脱离emulator和device独立运行在jvm的测试方式.(也就是说,如果我们需要写一些java代码,又不想在手机或者模拟器中运行,也不想打开Eclipse或者Intellij idea,就可以在这里面编写运行)
  • Android Instrument Test: 它是运行在emulator和device上的测试方式.

Android studio新建项目的时候,默认会支持两种测试用例包括Android Instrument Test和Android Unit Test,会在模块的build.gradle中默认引入以下依赖:

android{defaultConfig {//这句必须有,否则在运行测试用例的时候,会报Test running failed: Unable to find instrumentation info for......的错误testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}
}
dependencies {testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:1.0.1'androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

并在模块的/src目录下生成androidTest和test文件夹,如下图两个箭头所示:

可能你们注意到了,Android studio也友好的分别为我们在/androidTest文件夹和/test文件夹生成了ExampleInstrumentedTest类和ExampleUnitTest类,作为给我们开发人员一个参考demo,这个两个类的代码如下:

/*** Instrumented test, which will execute on an Android device.** @see <a href="http://d.android.com/tools/testing">Testing documentation</a>*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {@Testpublic void useAppContext() throws Exception {// Context of the app under test.Context appContext = InstrumentationRegistry.getTargetContext();assertEquals("com.example.dingx.messagepushdemo", appContext.getPackageName());}
}
/*** Example local unit test, which will execute on the development machine (host).** @see <a href="http://d.android.com/tools/testing">Testing documentation</a>*/
public class ExampleUnitTest {@Testpublic void addition_isCorrect() throws Exception {assertEquals(4, 2 + 2);}
}

具体集成方式

既然Android studio有现成的,于是按照Android studio新建项目时所依赖的东西,添加到现有项目中,并分别新建test文件夹和androidTest文件夹,注意以下引用不要忘了:

android{defaultConfig {//这句必须有,否则在运行测试用例的时候,会报Test running failed: Unable to find instrumentation info for......的错误testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}
}

当需要为当前类写测试用例的时候,右键空白处,依次选择以下选项即可:

关于Android studio集成其它第三方测试框架的方式,例如Robolectric,Espresso,Robotium,这里就不介绍了(其实我也没集成过:P).

Conflict with dependency 'com.android.support:support-annotations'解决方案相关推荐

  1. Conflict with dependency com.android.support-annotations' in project':app'.Resolved ...解决方法

    今天新建一个项目的时候在构建过程中出现如下的问题: 这个错误的大概意思是:我的名为app的module里,com.android.support:support-annotations这个依赖冲突了, ...

  2. Android Design Support Library初探-更新中

    导读 这个兼容库容易和Google之前发布的 Android Support Library 22.1 混淆,两者的区别在于: Android Support Library 22.1 只是支持了一些 ...

  3. Unity Hub安装Android Build Support报错:Failed to delete old Unity Android Supprtinstallation files

    安装失败: 解决方法: 需要先安装 Android Build Support ,再安装 Android SDK & NDK Tools 和 OpenJDK 其他情况: 如果已经安装了Andr ...

  4. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.2——使用Android Testing Support Library进行测试...

    问题: 你想要测试app的Android组件. 解决方案: 使用新的测试类实现JUnit风格的测试. 讨论: 测试像activities,services等的Android组件,需要将app部署到连接 ...

  5. Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法

    Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法 ...

  6. Android Design Support Library 中控件的使用简单介绍(一)

    Android Design Support Library 中控件的使用简单介绍(一) 介绍 在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android ...

  7. Material Design 开发利器:Android Design Support Library 介绍

    Material Design 开发利器:Android Design Support Library 介绍 本文翻译自著名博客 Android Developers,原作者是 Ian Lake,点击 ...

  8. Android Design Support Library--简约而不简单的SnackBar

    引言 在之前我有提到这一篇Android Design Support Library系列文章是关于SnackBar的,但是由于要用到CoordinatorLayout所以先翻译了一篇相关文章,如果还 ...

  9. Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

    目前,我相信,没有任何 Android 开发者不知道材料设计的,因为它的设计在过去的一年震惊了世界,正式的变成了一个设计理念. 令人惊讶的是,在 Android 应用中材料设计是不容易实现的,因为材料 ...

最新文章

  1. redhat 6.0 Enterprise企业版如何使用yum安装软件
  2. SAP IQ09 可以批量查询序列号数据
  3. bootstrap modal垂直居中(简单封装)
  4. how to become an expert in excel
  5. 计算机应用基础寒假作业,计算机应用基础理论试卷寒假作业.doc
  6. wordpressQQ登陆php代码,仅在登录时使用wordpress PHP代码
  7. 数仓出现“wait in ccn queue”的时候,怎么迅速定位处理?
  8. FPGA时钟资源PLL与DLL区别
  9. 如何在Mac上控制对日历的访问?
  10. java spring定时器_JAVA中 Spring定时器的两种实现方式
  11. Java字节码插桩玩法(Javassist)
  12. 网络监测用计算机安全管理制度,计算机信息网络安全管理制度
  13. 用C语言开发一个BT下载软件(一) ------ BitTorrent协议 -2
  14. Photoshop常用的技巧有哪些?
  15. python 权限认证 impala_python操作具有kerberos认证的hive(impala)
  16. 三维向量求夹角(0-360)
  17. 深入浅出Java Object Layout (JOL)
  18. Leetcode岛屿问题系列分析
  19. HT1382时钟芯片代码
  20. 输入一个年月日,计算这一天到公元元年有多少天

热门文章

  1. 实现 DirectShow 虚拟 Camera 驱动
  2. 病毒组学数据分析 -03 Virsorter2病毒序列识别
  3. 电动卡车的升级!我们的生活离自动驾驶来有多远?
  4. 学英语从背单词开始,但背单词要适可而止
  5. 最近学习dp的阶段小结(一)
  6. 片袖原型制图_服装工艺八种袖子原型的制图画法
  7. VMware如何彻底删除干净?
  8. 单细胞分析实录(7): 差异表达分析/细胞类型注释
  9. 质量员考试建筑八大员考试消防建筑设施施工质量存在的问题
  10. 用c语言写简单的游戏名字大全,适合女生的游戏名字,适合女生的游戏名字大全4个字...