Gradle:多重依赖需要slf4j

时间:2015-11-20 16:33:12

标签: android gradle pusher gimbal

我的gradle文件中有两个需要slf4j的库。 Pusher和Gimbal。这两个罐子里面都有slf4j。所以,即使我告诉gradle忽略它们(multiDexEnabled为true),我仍然会收到命名空间错误。

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

root = true

[*]
end_of_line = lf
insert_final_newline = true

# Matches multiple files with brace expansion notation
[*.{js,jsx,html,sass}]
charset = utf-8
indent_style = tab
indent_size = 4
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

我收到的错误(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

1 个答案:

答案 0 :(得分:3)

Multidex解决了与您描述的问题截然不同的问题。 Multidex解决了每个dex文件限制为~65,000个方法的问题。 You can find the documentation for multidex here

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

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

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

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