java - Realm 以及 Android 库项目

标签 java android realm

我有一个库项目,其中包含一些依赖项,如 fastadapter、nanotask、realm 等。我无法让它与主应用程序一起工作。不知何故,我在库项目和主应用程序上也需要 Realm 。

apply plugin: 'realm-android'

构建错误:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
java.util.concurrent.ExecutionException: com.android.dex.DexException:
Multiple dex files define Lio/realm/DefaultRealmModule;

如果我仅将插件应用于库项目,则不会再出现构建错误。但是在使用 Realm 时出现此错误。

Task is not part of the schema for this Realm.
                     at io.realm.internal.RealmProxyMediator.getMissingProxyClassException(RealmProxyMediator.java:242)
                     at io.realm.DefaultRealmModuleMediator.getTableName(DefaultRealmModuleMediator.java:107)
                     at io.realm.RealmSchema.getTable(RealmSchema.java:295)
                     at io.realm.Realm.checkHasPrimaryKey(Realm.java:1530)
                     at io.realm.Realm.copyToRealmOrUpdate(Realm.java:952)

这是库 gradle

最佳答案

如果在库项目中使用 Realm,则必须使用架构定义 RealmModule。否则,它将与为应用程序生成的架构冲突。这就是多个 DefaultRealmModule 错误的来源。您可以在这里阅读更多相关信息:https://realm.io/docs/java/latest/#sharing-schemas .

具体来说,这意味着库中的 RealmConfiguration 必须如下所示:

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

}

RealmConfiguration config = new RealmConfiguration.Builder()
  .modules(new MyLibraryModule())
  .build();

关于java - Realm 以及 Android 库项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42989768/

相关文章:

android - 如何将 Realm asObservable 与 RxJava 的 concat() 运算符一起使用?

android - 使用 kotlin 时制作实体和 Dao 文件的官方/正确方法是什么

java - Lucene查询修改

java - 我们如何更改 Java 项目的 pom.xml 中定义的特定依赖项的位置?

java - 在java中访问其类之外的私有(private)变量

Android 模拟器错误:std::bad_alloc

android - 如何从可扩展 ListView 中获取更新值

react-native - Realm 和 React Native - 实现自动更新的最佳实践?

ios - 类型转换 RLMObject 会丢弃数据

java - 并发修改异常,尽管等待完成