切换到插件android gradle 3.3时,生成项目io.realm.DefaultRealmModule时出错



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的除外。希望这能有所帮助。

最新更新