You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Android Library中添加Realm Kotlin依赖遇编译错误求助

Android Library封装Realm Kotlin供主应用调用的编译错误解决

问题原因

你遇到的编译错误核心有两个诱因:

  • 用implementation声明Realm依赖,该规则仅让依赖对当前Library模块可见,主应用依赖Library时无法自动获取Realm相关类,导致找不到RealmObject超类
  • Realm插件版本(1.14.0)与依赖版本(1.11.0)不一致,可能引发依赖冲突

解决方案

1. 调整依赖传递规则,替换implementation为api

将Library模块中Realm相关的implementation依赖改为api,这样依赖会自动传递给主应用,主应用无需单独声明Realm依赖:

// build.gradle.kts (Module :lib)
dependencies {
    // ... 其他依赖保持不变

    // 替换原Realm依赖为api声明,统一版本与插件一致
    api("io.realm.kotlin:library-base:1.14.0")
    api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.0")
}

2. 统一Realm插件与依赖版本

确保插件版本和依赖版本完全一致,避免版本冲突:

plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.android")
    // 插件版本1.14.0,对应依赖版本同步为1.14.0
    id("io.realm.kotlin") version "1.14.0"
}

3. 优化Realm初始化代码(可选但推荐)

避免在全局作用域直接初始化Realm实例,防止内存泄漏,建议封装为单例管理类:

// Library中的Realm管理类
object RealmManager {
    private lateinit var realm: Realm

    fun init(context: Context) {
        val config = RealmConfiguration.create(schema = setOf(SomeObject::class))
        realm = Realm.open(config)
    }

    fun getRealm(): Realm = realm
}

// Realm数据对象类
class SomeObject : RealmObject {
    @PrimaryKey
    var id: String = ""
    var name: String = ""
}

验证方式

修改完成后同步Gradle并重新编译主应用,此时主应用仅依赖你的Library即可正常访问SomeObject,无需单独添加Realm依赖。

内容的提问来源于stack exchange,提问作者margab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:20:20