最近忙着学校课题好久没有搞Android,找了个开源项目做了做,刚新建完项目编译就报了如下错误:
意思应该是本地和测试包依赖的项目版本不同导致。
神奇的是我们重新ReBuild一下项目这个报错就没了,但是本着求实的态度我还是去搜索了一下产生的原因:
首先是我的项目的依赖
dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:26.1.0'implementation 'com.android.support.constraint:constraint-layout:1.1.3'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'
}
一开始我把26.1.0改成和测试包版本相同,但是提示需要需要APK27的SDK,这个肯定和我原本的初衷违背,于是思考其他方法。
之后在stackoverflow上面找到了一个类似的问题:https://stackoverflow.com/questions/28999124/resolved-versions-for-app-22-0-0-and-test-app-21-0-3-differ
首先直接说一下解决方案,我们可以简单粗暴,添加force强制指定annotations
configurations.all {resolutionStrategy.force 'com.android.support:support-annotations:26.1.0'
}
事实上这个应该是最新版本的Espresso Contrib(一种AndroidUI的自动化测试框架)的Bug。
最后解决这种类似问题的思路我也在另一篇博客里面给出了,有需要的可用看看:获取Gradle依赖报告