gpt4 book ai didi

安卓测试 : Multiple dex files define Lorg/hamcrest/Description;

转载 作者:搜寻专家 更新时间:2023-11-01 08:40:17 27 4
gpt4 key购买 nike

我在进行插桩测试时遇到了以下运行时错误。

Unknown source file : UNEXPECTED TOP-LEVEL EXCEPTION:
Unknown source file : com.android.dex.DexException: Multiple dex files define Lorg/hamcrest/Description;
Unknown source file : at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
Unknown source file : at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
Unknown source file : at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
Unknown source file : at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Unknown source file : at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
Unknown source file : at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)
Unknown source file : at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
Unknown source file : at com.android.dx.command.dexer.Main.run(Main.java:277)
Unknown source file : at com.android.dx.command.dexer.Main.main(Main.java:245)
Unknown source file : at com.android.dx.command.Main.main(Main.java:106)

我认为这个问题有很多类似的问题。

然而,他们中的大多数建议将 hamcrest 库从其他依赖项中排除,但这并没有解决我的问题:(

这是我的 build.gradle

的依赖项部分
dependencies {
androidTestCompile files('libs/java-hamcrest-2.0.0.0.jar')
androidTestCompile files('libs/hamcrest-json-0.2.jar')
androidTestCompile files('libs/jsonassert-1.2.3.jar')
androidTestCompile ('org.powermock:powermock-module-junit4:1.6.3')
{
exclude module: 'hamcrest-core'
exclude module: 'objenesis'
}
androidTestCompile ('org.powermock:powermock-api-mockito:1.6.3') {
exclude module: 'hamcrest-core'
exclude module: 'objenesis'
}

androidTestCompile ('com.android.support.test:runner:0.4.1') {
exclude module: 'hamcrest-core'
}
androidTestCompile ('com.android.support.test:rules:0.4.1') {
exclude module: 'hamcrest-core'
}

}

我使用了 gradle dependencies 并且 androidTestCompile 中没有 hamcrest-core,但在检测时仍然失败。

我错过了什么重要的事情?

谢谢!

最佳答案

在深入查看gradle dependencies的结果后,我发现根本原因是org.powermock:powermock-api-mockito包含mockito-所有模块。

但是,mockito-all 模块内部包含hamcrest 库(但是你看不到它与gradle 依赖),这是冲突的与其他依赖项。

因此,要解决此问题,我们需要将 org.powermock:powermock-api-mockito 替换为 org.powermock:powermock-api-support,这不会包含 mockito-all

替换

dependencies {
androidTestCompile ('org.powermock:powermock-api-mockito:1.6.3') {
exclude module: 'hamcrest-core'
exclude module: 'objenesis'
}
}

dependencies {
androidTestCompile 'org.powermock:powermock-api-support:1.6.3'
}

应该适合我。

关于安卓测试 : Multiple dex files define Lorg/hamcrest/Description;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33362591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com