我有一个库项目,其中包含一些依赖项,如 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
如果在库项目中使用 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();
使用kotlin的可以参考这篇文章 那些使用java的人这是我的代码。 模块级build.gradle文件
buildscript {
repositories {
mavenCentral()
google()
}
dependencies {
classpath("io.realm:realm-gradle-plugin:10.15.1")
}
}
plugins {
id("com.android.application") version "8.1.2" apply false
}
应用程序级build.gradle文件
plugins {
id("com.android.application")
id("realm-android")
}