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

Realm数据库异常求助:User类不属于Schema导致应用崩溃

解决Realm错误:User is not part of the schema for this Realm

以下是针对该问题的排查和解决步骤:

1. 添加Realm Gradle插件(核心修复)

你的项目中缺少Realm的Gradle插件,这会导致Realm无法自动扫描并生成包含User类的Schema。需要在build.gradle(Module:app)的plugins块中添加对应版本的插件:

plugins {
    id "com.android.application"
    id "org.jetbrains.kotlin.android"
    id "com.google.gms.google-services"
    id "com.google.firebase.crashlytics"
    // 添加Realm插件,版本需与依赖库版本一致
    id "io.realm.realm-gradle-plugin" version "10.15.1"
}

2. 手动指定Realm模型模块(可选,若插件未生效)

如果添加插件后仍无法识别User类,可以手动创建Realm模块并在配置中指定:

创建自定义Realm模块

import io.realm.RealmModule;

@RealmModule(classes = {User.class, Audit.class}) // 包含你所有的Realm模型类
public class AppRealmModule {}

修改Realm配置,添加模块

RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
        .name(Realm.DEFAULT_REALM_NAME)
        .schemaVersion(1)
        .modules(new AppRealmModule()) // 添加自定义模块
        .migration(new RealmMigrations())
        .build();
Realm.setDefaultConfiguration(realmConfiguration);

3. 处理Realm迁移(若User类是新增模型)

如果User类是后来添加到项目中的,当前的Realm数据库文件中没有该表,需要更新Schema版本并在迁移中创建User表:

1. 更新Schema版本

RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
        .name(Realm.DEFAULT_REALM_NAME)
        .schemaVersion(2) // 从1升级到2
        .migration(new RealmMigrations())
        .build();

2. 修改迁移类,添加User表创建逻辑

@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
    RealmSchema schema = realm.getSchema();

    if (oldVersion == 0) {
        schema.get("Audit")
                .addField("savedAsDraft", boolean.class);
        oldVersion++;
    }

    // 新增:处理从版本1到2的迁移,创建User表
    if (oldVersion == 1) {
        schema.create("User")
                .addField("userId", long.class)
                .addPrimaryKey("userId");
        oldVersion++;
    }
}

4. 清理并重建项目

执行Android Studio的Build > Clean Project,然后Build > Rebuild Project,清除编译缓存,确保Realm注解处理器生成最新的Schema代码。

5. 验证User类的注解正确性

确认User类的注解和继承关系无误:

  • 确保继承RealmObject
  • @PrimaryKey注解正确添加到主键字段上
  • 类本身是public访问修饰符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:05:24