领域与Android库项目一起

时间:2017-03-24 01:14:54

标签: java android realm

我的库项目包含一些依赖项,如fastadapter,nanotask,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;

如果我只将插件应用于库项目,那么不会再出现构建错误。但是在使用领域时遇到此错误。

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

1 个答案:

答案 0 :(得分:2)

如果在库项目中使用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();