【问题标题】:Realm - mix models from different projectsRealm - 混合来自不同项目的模型
【发布时间】:2016-10-12 10:30:10
【问题描述】:

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

public class A extends RealmObject{

    private String var1;
    private B var2;

    //... more
}

另外,我的库中有我的课程B(不同的 android-studio 模块)

public class B extends RealmObject{

    private String var1;

    //... more
}

我无法构建它,因为:

错误:将字节码转换为dex时出错:原因: com.android.dex.DexException:多个 dex 文件定义 lio/realm/DefaultRealmModule;

错误:任务“: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{
}

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

我的毕业生:

类路径“io.realm:realm-gradle-plugin:2.0.2”

应用插件:'realm-android'

在两个项目中

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

【问题讨论】:

  • 每个项目应该有一个模块。库项目必须通过模式公开其对象

标签: java android orm module realm


【解决方案1】:

您的库项目必须公开一个@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

【讨论】:

    【解决方案2】:

    您必须使用 RealmModule 在库项目中公开您的架构。

    查看文档:https://realm.io/docs/java/latest/#sharing-schemas

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      相关资源
      最近更新 更多