所以为了修复我在 Android 6 设备上生产时遇到的一个讨厌的崩溃,我被迫在 gradle 中严格使用 android 版本的番石榴。
如果有兴趣,这里会描述有问题的崩溃:java.lang.NoClassDefFoundError: com.google.common.base.CharMatcher
解决这个crash的方法是定义guava依赖如下:
implementation ("com.google.guava:guava:31.1-android") {
version{
strictly "31.1-android"
}
}
所以这修复了崩溃(能够在模拟器上重现问题)。但是,现在当我尝试运行单元测试时出现问题,特别是 Robolectric 单元测试。 Robolectric 依赖于 31.1-jre。我在控制台中收到此错误:
Dependency path 'app:unspecified' --> 'app:unspecified' (localDebugRuntimeElements) --> 'com.google.guava:guava:{strictly 31.1-android}'
Dependency path 'app:unspecified' --> 'org.robolectric:robolectric:4.9.2' (runtimeElements) --> 'org.robolectric:pluginapi:4.9.2' (runtimeElements) --> 'com.google.guava:guava:31.1-jre'
除非删除严格定义,否则我无法运行单元测试。
所以我的问题是:有没有一种方法可以严格执行不同版本的依赖项来进行测试?
我现在基本上不得不在运行单元测试时诉诸注释代码。任何帮助将不胜感激!