如何将库模块多次包含到同一个应用程序项目中的多个库模块中?

时间:2015-09-30 03:02:11

标签: android gradle android-gradle realm dex

我有一个项目结构:
- app模块
- 多个库模块..
- ......
- 上面的库模块消耗的公共库模块(commonlib)^(包含作为依赖的领域(编译' io.realm:realm-android:0.82.2')

现在commonlib作为依赖包含在许多模块中,当我尝试运行项目时,我发现了多个dex文件错误:

:app:preDexDebug UP-TO-DATE
:app:dexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lio/realm/DefaultRealmModule;
    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:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    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 '/home/user/java/jdk1.7.0_75/bin/java'' finished with non-zero exit value 2

任何人都可以帮助我如何包含领域库,但同时在所有依赖模块中包含它和commonlib模块?感谢

1 个答案:

答案 0 :(得分:1)

看起来您的某些图书馆项目尚未将其架构定义为库模块。如果他们不这样做,他们也会创建文件DefaultRealmModule,这就是您在应用项目中遇到冲突的原因。

你的所有库都应该有一个看起来像这样的类:

@RealmModule(library = true, allClasses = true)
public class MyLibraryModule() {

}

您可以在此处阅读有关如何在库和应用项目中包含Realm的更多信息:https://realm.io/docs/java/latest/#sharing-schemas