【问题标题】:Realm Android : io.realm.exceptions.RealmException: 'DomainModel' doesn't exist in current schemaRealm Android:io.realm.exceptions.RealmException:“DomainModel”在当前架构中不存在
【发布时间】:2017-09-12 22:10:13
【问题描述】:

我在 android 应用程序中使用领域 db 我已根据文档集成领域 db,如下所示:

build.gradle(项目级别)

dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
        classpath "io.realm:realm-gradle-plugin:3.7.0"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

build.gradle(应用级)

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'realm-android'

以下是 MyApplication 类中的代码

Realm.init(this);
        RealmConfiguration config = new RealmConfiguration.Builder()
                .name(Realm.DEFAULT_REALM_NAME)
                .schemaVersion(1)
                .deleteRealmIfMigrationNeeded()
                .build();

        Realm.getInstance(config);
        Realm.setDefaultConfiguration(config);

模型类

public class MyModel extends RealmObject {

    @PrimaryKey
    @SerializedName("message")
    private String message;

    @SerializedName("session_expired")
    private Integer sessionExpired;

    @SerializedName("domain_name")
    private String domainName;

    public String getDomainName() {
        return domainName;
    }

    public void setDomainName(String domainName) {
        this.domainName = domainName;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Integer getSessionExpired() {
        return sessionExpired;
    }

    public void setSessionExpired(Integer sessionExpired) {
        this.sessionExpired = sessionExpired;
    }
}

现在,就调试构建而言,应用程序按预期运行,没有任何崩溃。 但是当我生成发布版本时,应用程序会因

而崩溃

io.realm.exceptions.RealmException: 'MyModel' 不存在于当前 架构。

请看一下上面的代码,请帮我解决这个崩溃。提前致谢。

注意:我以

身份访问领域对象

领域领域 = Realm.getDefaultInstance();

下面是堆栈跟踪

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                   io.realm.exceptions.RealmException: 'MyModel' doesn't exist in current schema.
                                                                       at and.c(SourceFile:5112)
                                                                       at ans.a(SourceFile:48)
                                                                       at aon.a(SourceFile:68)
                                                                       at aop.d(SourceFile:285)
                                                                       at aop.a(SourceFile:178)
                                                                       at anb.a(SourceFile:3261)
                                                                       at abh.c(SourceFile:259)
                                                                       at com.mpose.com.mpose.activity.LoginActivity.k(SourceFile:306)
                                                                       at abh.b(SourceFile:1219)
                                                                       at com.mpose.com.mpose.activity.LoginActivity.loginClick(SourceFile:134)
                                                                       at com.mpose.com.mpose.activity.LoginActivity$$ViewBinder$1.doClick(SourceFile:18)
                                                                       at butterknife.internal.DebouncingOnClickListener.onClick(SourceFile:22)
                                                                       at android.view.View.performClick(View.java:4084)
                                                                       at android.view.View$PerformClick.run(View.java:16966)
                                                                       at android.os.Handler.handleCallback(Handler.java:615)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                       at android.os.Looper.loop(Looper.java:137)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                                       at java.lang.reflect.Method.invokeNative(Native Method)
                                                                       at java.lang.reflect.Method.invoke(Method.java:511)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                       at dalvik.system.NativeStart.main(Native Method)

这是我访问 MyModel 类的方式

final RealmQuery<MyModel> query = mRealm.where(MyModel.class).equalTo("message", "Success");
        RealmResults<MyModel> result = query.findAll();

        mRealm.executeTransaction(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
                MyModel myModel = query.findFirst();
                if (myModel != null) {
                    myModel.setDomainName(strDomain);
                }
            }
        });

【问题讨论】:

  • 异常发生在代码哪里?请发布堆栈跟踪。还要确保正在创建 MyModel 并将其分配给您的 db 对象。
  • 您可以查看stackoverflow.com/a/40213266/2413303 进行疯狂猜测。
  • 非常感谢。它解决了我的问题。你的疯狂猜测非常有效。
  • 这是领域方面的错误。 github.com/realm/realm-java/pull/5239 将修复它。 3.7.2 应该包括修复。

标签: android realm


【解决方案1】:

您是否尝试过更新到最新版本? 定期检查 the Realm changelog 是否有错误修复是个好主意。

我遇到了类似的问题,更新到 Realm v3.7.2 解决了它。在更新日志中,您可以找到:

当前架构中不存在“'xxx'”导致的崩溃。启用 ProGuard 时 (#5211)。

【讨论】:

  • 没有,3.7.2版本没试过。现在我使用的是 3.7.0。一些proguard规则解决了这个问题。但我以后会使用更新的版本。
猜你喜欢
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
相关资源
最近更新 更多