Java 领域-来自不同项目的混合模型

Java 领域-来自不同项目的混合模型,java,android,orm,module,realm,Java,Android,Orm,Module,Realm,我的主要项目中有一个模型: public class A extends RealmObject{ private String var1; private B var2; //... more } 另外,我的类库中有我的类B(不同的android studio模块) 我无法构建此文件,因为: 错误:将字节码转换为索引时出错:原因: com.android.dex.dex异常:多个dex文件定义 Lio/realm/DefaultRealmModule 错误:任务执

我的主要项目中有一个模型:

public class A extends RealmObject{

    private String var1;
    private B var2;

    //... more
}
另外,我的类库中有我的类
B
(不同的android studio模块)

我无法构建此文件,因为:

错误:将字节码转换为索引时出错:原因: com.android.dex.dex异常:多个dex文件定义 Lio/realm/DefaultRealmModule

错误:任务执行失败:容器:transformClassesWithDexForDebug'。 com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:java.lang.UnsupportedOperationException

我正在设置自己的模块:

@NonNull
public static RealmConfiguration getRealmConfiguration(String name) {
    return new RealmConfiguration.Builder()
            .name(name)
            .deleteRealmIfMigrationNeeded()
            .modules(new MyRealmModule())
            .build();
}

@RealmModule(allClasses = true, library = true)
public static class MyRealmModule{
}
它应该从两个项目中提取我的模型,对吗

我的格拉德尔:

类路径“io.realm:realm gradle插件:2.0.2”

应用插件:'realmandroid'

在这两个项目中


如何以正确的方式进行此操作?

您必须使用RealmModule在库项目中公开您的模式


查看文档:

您的库项目必须公开一个
@RealmModule
,它公开
library=true,allClasses=false
,并且只公开对象
B
。您应该将该模块添加到具有的项目的配置中

您可以选择在项目中添加
Realm.getDefaultModule()
,也可以为项目本身创建一个模块,即
library=false,allClasses=true

@RealmModule(library = true, allClasses = true)
public class LibraryModule { // in library 
}


每个项目都应该有一个模块。库项目必须通过架构公开其对象
@RealmModule(library = true, allClasses = true)
public class LibraryModule { // in library 
}
.modules(new LibraryModule(), Realm.getDefaultModule()) // in project