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.remarm.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()
当你说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右侧窗格的渐变任务列表中运行clean和cleanBuildCache。这将阻止在构建期间创建DefaultRealmModule,但应用程序模块中使用的或库的最终用户使用Realm DB的除外。希望这能有所帮助。