我的主项目中有一个模型:
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/