java - Realm - 混合来自不同项目的模型

标签 java android orm module realm

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

public class A extends RealmObject{

    private String var1;
    private B var2;

    //... more
}

此外,我的库中有我的类 B(不同的 android-studio 模块)

public class B extends RealmObject{

    private String var1;

    //... more
}

我无法构建它,因为:

Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define Lio/realm/DefaultRealmModule;

Error:Execution failed for task ':Container: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{
}

它应该从两个项目中提取我的模型,对吗?

我的毕业典礼:

classpath "io.realm:realm-gradle-plugin:2.0.2"

apply plugin: 'realm-android'

在两个项目中

如何以正确的方式做到这一点?

最佳答案

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

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

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

.modules(new LibraryModule(), Realm.getDefaultModule()) // in project

关于java - Realm - 混合来自不同项目的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39996370/

相关文章:

android - 自定义进度对话框

android - 应用程序中的 Facebook 视频和图像

android - 如何在 Android 中居中对齐 ActionBar 标题?

java - Hibernate使用PostgreSQL序列不影响序列表

linq - 什么可以像 LINQ to SQL 那样映射数据库表呢?

c# - 需要一个按钮来在单击时更改其文本

java - 用于大量数据输入的斐波那契数列的第 n 项(无递归或循环)

mysql - 如何在左连接中使用子查询作为表

java - 运行时忽略 While 循环?

java - 如何为 javadoc 创建可分发的 jar?