0

我的 gradle 文件中有两个需要 slf4j 的库。推杆和万向节。这两个罐子里都有 slf4j。因此,即使我告诉 gradle 忽略它们(multiDexEnabled true),我仍然会收到命名空间错误。

有谁知道如何解决这一问题?

com.android.dex.DexException: Multiple dex files define Lorg/slf4j/impl/StaticLoggerBinder;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2

我收到的错误(multiDexEnabled true):

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
>java.util.zip.ZipException: duplicate entry: org/slf4j/helpers/BasicMarker.class
4

1 回答 1

3

Multidex 解决了与您描述的问题非常不同的问题。Multidex 修复了每个 dex 文件限制为约 65,000 个方法的问题。您可以在此处找到 multidex 的文档

相反,您想要做的是从您的一个库中排除 sl4j,这是一个可能看起来像的示例,具体取决于导致问题的依赖项:

compile ('com.example.library:library-with-sl4j:1.0') {
    exclude group: 'org.sl4j', module: 'sl4j-simple'
}

您必须确定导致问题的库以及需要排除的 sl4j 模块。

理想情况下,您会通知使用旧版本的库作者他们应该更新,以便您的所有依赖项都使用相同的(最新)版本。

于 2015-11-20T16:40:14.097 回答