Android:领域迁移问题

Android:领域迁移问题,android,realm,realm-migration,Android,Realm,Realm Migration,我是android新手,在我的应用程序中使用了realm,但当时我没有指定schemaversion,现在我想升级应用程序并实现迁移 以前我是这样做的, Realm.init(getApplicationContext()); RealmConfiguration realmConfiguration = new RealmConfiguration.Builder().build(); realm = Realm.getInstance(re

我是android新手,在我的应用程序中使用了realm,但当时我没有指定schemaversion,现在我想升级应用程序并实现迁移

以前我是这样做的,

Realm.init(getApplicationContext());

RealmConfiguration realmConfiguration =
                        new RealmConfiguration.Builder().build();

realm = Realm.getInstance(realmConfiguration);
现在

Realm.init(getApplicationContext());

RealmConfiguration realmConfiguration =
                            new RealmConfiguration.Builder().schemaVersion(1).migration(new Migration()).build();

realm = Realm.getInstance(realmConfiguration);  
我得到了这个错误

java.lang.IllegalArgumentException: Configurations cannot be different if used to open the same file. 
Cached configuration: 
realmDirectory: /data/user/0/in.avanti_app.student_companion.debug/files
realmFileName : default.realm
canonicalPath: /data/data/in.avanti_app.student_companion.debug/files/default.realm
key: [length: 0]
schemaVersion: 1
migration: in.avanti_app.student_companion.realmClasses.Migration@25
deleteRealmIfMigrationNeeded: false
durability: FULL
schemaMediator: io.realm.DefaultRealmModuleMediator@793ec9a4

New configuration: 
realmDirectory: /data/user/0/in.avanti_app.student_companion.debug/files
realmFileName : default.realm
canonicalPath: /data/data/in.avanti_app.student_companion.debug/files/default.realm
key: [length: 0]
schemaVersion: 0
migration: null
deleteRealmIfMigrationNeeded: false
durability: FULL
schemaMediator: io.realm.DefaultRealmModuleMediator@793ec9a4
我还重写了迁移类中的hasCode和equals。

调用
Realm.init(Context)
在下面的代码中初始化“默认配置”

public static synchronized void init(Context context) {
    if (BaseRealm.applicationContext == null) {
        if (context == null) {
            throw new IllegalArgumentException("Non-null context required.");
        }
        RealmCore.loadLibrary(context);
        defaultConfiguration = new RealmConfiguration.Builder(context).build();
        ObjectServerFacade.getSyncFacadeIfPossible().init(context);
        BaseRealm.applicationContext = context.getApplicationContext();
        SharedRealm.initialize(new File(context.getFilesDir(), ".realm.temp"));
    }
}
但是
newrealmconfiguration.Builder(context.build()
设置不带架构版本、迁移、
DeleteIfMigrationRequired()
等的配置

为了设置新的默认配置,您需要创建配置,然后调用
Realm.setDefaultConfiguration(realmConfig)



我还重写了迁移类中的hasCode和equals。
请显示相关代码,尽管它似乎声称您有一个配置为
schemaVersion1
schemaVersion0
@EpicPandaForce公共类迁移实现了realmigation{Overirde public int hashCode(){return Migration.class.hashCode();}Overirde public boolean equals(对象o){return(迁移的实例);}Overirde public void migrate(最终的dynamicrelm领域,long oldVersion,long newVersion){//迁移逻辑}您正在代码中的某个位置创建一个新的RealmConfiguration,该配置没有指定新的架构版本和迁移。没有,我已经检查了该部分。
RealmConfiguration realmConfiguration =
         new RealmConfiguration.Builder().schemaVersion(1).migration(new Migration()).build();
Realm.setDefaultConfiguration(realmConfiguration);
realm = Realm.getDefaultInstance();