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

Realm迁移报错:提示已移除$stable属性但从未添加该属性

解决Realm迁移错误:Property 'FeedbackModel.$stable' has been removed

问题原因

$stable是Realm Kotlin SDK编译时自动生成的内部属性,用于对象稳定性校验。出现这个错误通常是因为编译缓存残留、SDK版本不匹配,或者之前的构建过程中该属性被意外写入了Realm Schema。

解决方案

1. 清理编译缓存

先尝试清理项目编译缓存,消除可能的残留问题:

  • 在Android Studio中,点击File > Invalidate Caches...,勾选Clear file system cache and local history,然后重启IDE。
  • 或者执行命令行清理:
    # Mac/Linux
    ./gradlew clean
    
    # Windows
    gradlew clean
    

2. 统一Realm SDK版本

检查项目中所有Realm相关依赖的版本是否一致,比如在Module级别的build.gradle中:

dependencies {
    implementation("io.realm.kotlin:library-base:1.12.0")
    kapt("io.realm.kotlin:plugin:1.12.0")
}

确保所有Realm依赖版本相同,避免版本冲突导致的编译异常。

3. 手动添加迁移规则(缓存清理无效时)

如果清理缓存后错误依然存在,需要在Realm配置中显式处理该属性的移除:

val realmConfig = RealmConfiguration.Builder(
    schema = setOf(FeedbackModel::class)
)
    .schemaVersion(2) // 版本号需高于当前已有的schema版本
    .migration { oldRealm, newRealm ->
        // 从旧schema中移除$stable属性
        if (oldRealm.schemaVersion < 2) {
            oldRealm.schema.get("FeedbackModel")?.removeField("\$stable")
        }
    }
    .build()

注意字段名中的$需要用\转义,确保能正确匹配到内部生成的属性。

4. 重置Realm(开发环境可选)

如果处于开发阶段,测试数据可以丢弃,直接重置Realm文件:

// 在初始化Realm前执行
Realm.deleteRealm(realmConfig)

也可以通过设备的应用设置,清除应用数据来重置Realm。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:20:52