2017-09-06 14 views
1

存在しない、私は次のようにあるドキュメントあたりdBまでレルムを統合したアンドロイドアプリケーションでレルムデシベルを使用しています.gradle(プロジェクトレベル)レルムアンドロイド:io.realm.exceptions.RealmException:</p> <p>ビルド:「ドメインモデル」は現在のスキーマで

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 = 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) 

である私は

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); 
       } 
      } 
     }); 
+0

ここで、コードで例外が発生しますか?スタックトレースを投稿してください。また、MyModelが作成され、dbオブジェクトに割り当てられていることを確認してください。 – Twometer

+3

あなたは野生の推測のためにhttps://stackoverflow.com/a/40213266/2413303を見ることができます。 – EpicPandaForce

+0

ありがとうございました。それは私の問題を解決する。あなたの野生の推測は完全に機能しています。 – Ritesh

答えて

1

はあなたが最新のバージョンにアップデートしようとしたことがありmymodelというクラスをアクセスしていますがどのようですか? the Realm changelogに定期的にバグ修正をチェックするのは良い考えです。

私は同様の問題を抱えていて、Realm v3.7.2を更新すると解決しました。チェンジログには、次のものがあります。

"'xxx'は現在のスキーマに存在しません。 ProGuardが有効になっている場合(#5211)。

+1

いいえ、私は3.7.2バージョンを試していません。今は3.7.0を使用しています。一部のプロガード規則が問題を解決しています。しかし、私は将来、更新されたバージョンを使用します。 – Ritesh

関連する問題