我已经使用第三方库(zxing)在实现项目运行良好之后使用第三方库(zxing)实现了项目,然后在我编写了一个测试项目来对我的项目进行单元测试之后。运行测试项目后,主项目、类和它的方法没有给出任何错误,但是如果在主项目的该方法中使用了任何 zxing 框架类,则在运行时而不是编译时出现上述错误。请告诉我如何解决这个问题?
9 回答
由于第三方库引用添加了两次,您会收到此错误。您已在测试项目的构建路径中添加了应用程序路径。所以库引用自动添加到测试项目”。在属性-> android下删除测试项目中的任何库引用。
仅供参考, 请单击此处查看详细说明。
这是因为 zxing jar 文件被加载了两次,您必须在编译时将 zxing 库设置为“提供”(如果您使用 Maven 编译代码),因此它不会将该库添加到您的字节码中。这样你就不会得到错误
不幸的是,我见过的最好的解决方案是使用带有这些代码行的脚本并使用 Espresso v2.0:
adb shell setprop dalvik.vm.dexopt-flags v=n,o=v
adb shell stop installd
adb shell start installd
在开始测试之前执行它。只需执行一次。
我在 Intelij Idea 中更改了测试项目设置。转到 Modules -> Dependencies,然后将测试项目的范围设置为“提供”。
我收到此错误是因为我正在使用番石榴,而 Espresso 也包含番石榴。
如果您使用 Gradle 和 Android Studio,您可以从依赖项中排除包,如下所示:
androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') {
exclude group: 'com.google.guava'
}
从 Eclipse 中项目的 Java 构建路径下的“订购和导出”选项卡中取消选中 jars(在我的情况下为地图和 google play services jar)。但让它们添加到“库”选项卡中。单击确定,清理项目并立即构建。有用。
我有时会遇到这个错误。只是 build->clean 项目帮助了我
如果您不是特别需要 API 版本较低 (<=19) 的设备,您可以留下传递依赖并创建一个 API 版本较高的模拟器。
这只发生在 API 低于 Lollipop (API 21) 的设备上。在更高/等于 API 21 的模拟器上运行测试正常运行,没有问题。
我在低于 21 的 api 级别上有这个错误。只是 build->rebuild 项目帮助了我。