Gradle: для нескольких зависимостей требуется slf4j
У меня есть две библиотеки в моем файле 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
1 ответ
Multidex решает совершенно другую проблему, чем та, которую вы описываете. Multidex решает проблему ограничения до ~65 000 методов на файл dex. Вы можете найти документацию по мультидексу здесь.
Вместо этого вам нужно исключить sl4j из одной из ваших библиотек, вот пример того, как это может выглядеть, в зависимости от того, какие зависимости вызывают проблему:
compile ('com.example.library:library-with-sl4j:1.0') {
exclude group: 'org.sl4j', module: 'sl4j-simple'
}
Вам нужно будет определить, какая библиотека вызывает проблему, и какой модуль sl4j нужно исключить.
В идеале вы должны сообщить авторам библиотеки, использующим более старые версии, что они должны обновить, чтобы все ваши зависимости использовали одну и ту же (последнюю) версию.