Исключая переходные зависимости в Gradle
Я смотрю на источник приложения слияния контактов на F-Droid, расположенном здесь, и получаю UNEXPECTED TOP LEVEL EXCEPTION
во время компиляции.
Я видел такие вопросы, так что я знаю, что ошибка из дубликата файла SPIClassIterator. В источнике, новый SPIClassIterator.java
был создан, так что это имеет смысл. Как я могу использовать exclude
в Gradle, чтобы удалить оригинал SPIClassIterator
файл класса. Или каков наилучший способ избежать этого?
Вот снимок журнала ошибок.
:dexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added:Lorg/apache/lucene/util/SPIClassIterator;
at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
at com.android.dx.command.dexer.Main.processClass(Main.java:685)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
at com.android.dx.command.dexer.Main.access$600(Main.java:78)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:596)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
1 error; aborting
Error:Execution failed for task ':dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
Ниже раздел build.gradle
dependencies {
compile 'com.tundem.aboutlibraries:library:2.0.3@aar'
compile 'com.android.support:support-v4:+'
compile 'org.ow2.asm:asm:4.0'
compile 'com.esotericsoftware.kryo:kryo:2.24.0'
compile ('org.apache.lucene:lucene-core:4.7.1'){
exclude module: 'SPIClassIterator'
}
compile 'org.apache.lucene:lucene-misc:4.7.1'
compile 'org.apache.lucene:lucene-queries:4.7.1'
compile 'org.apache.lucene:lucene-analyzers-common:4.7.1'
compile 'org.apache.lucene:lucene-codecs:4.7.1'
}
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
dexOptions {
preDexLibraries = false
}
packagingOptions {
pickFirst 'org/apache/lucene/util/SPIClassIterator.class'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/services/org.apache.lucene.codecs.Codec'
exclude 'META-INF/services/org.apache.lucene.codecs.PostingsFormat'
exclude 'META-INF/services/org.apache.lucene.codecs.DocValuesFormat'
}
Я пытался использовать исключение на lucene-core
так как это библиотека, которая содержит оригинал SPIClassIterator
что я хотел бы исключить. Я ценю разъяснения.