Android项目有两个使用Realm的模块。
组装时
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
classpath "io.realm:realm-gradle-plugin:5.7.0"
}
}
没问题。
但是,在使用gradle:3.3.0进行构建时,出现错误“错误:程序类型已存在:io.realm.DefaultRealmModule”。
告诉我原因是什么以及如何消除它。
模块1
@RealmModule(classes = [
ResponseMetadata::class
])
class CourierModule
RealmConfiguration.Builder()
.name("module1.realm")
.schemaVersion(version)
.modules(CourierModule())
.deleteRealmIfMigrationNeeded()
.build()
模块2
@RealmModule(classes = [
CookiesAuthInstaller::class
])
class InstallerModule
RealmConfiguration.Builder()
.name("module2.realm")
.schemaVersion(version)
.modules(InstallerModule())
.deleteRealmIfMigrationNeeded()
.build()
答案 0 :(得分:0)
当您说android模块时,我假设您将这些模块称为带插件的库
apply plugin: 'com.android.library'
在这种情况下,您需要按如下所示修改自定义领域模块声明
@RealmModule(library = true, classes = [CookiesAuthInstaller::class])
class InstallerModule
RealmConfiguration.Builder()
.name("module2.realm")
.schemaVersion(version)
.modules(InstallerModule())
.deleteRealmIfMigrationNeeded()
.build()
然后是第二个模块:
@RealmModule(library = true, classes = [ResponseMetadata::class])
class CourierModule
RealmConfiguration.Builder()
.name("module1.realm")
.schemaVersion(version)
.modules(CourierModule())
.deleteRealmIfMigrationNeeded()
.build()
最后,不要忘记从IDE右窗格的gradle任务列表中运行clean和cleanBuildCache。 这样可以防止在构建期间创建DefaultRealmModule,但应用模块中使用的那个或使用Realm DB的库的最终用户除外。希望这可以帮助。