Realm プラットフォーム:モバイル Android
Realm バージョン: 3.3.2
暗号化:はい
私はプロダクションアプリを持っています。アプリ v0.3.0 から v0.14.0 までの移行が必要な場合は、レルムの自動削除を使用します。何らかの理由で、v0.14.2 では手動で移行する必要があります。また、v0.14.0 より前のバージョンから更新したため、エラーが発生したユーザーもいましたが、私は v0.14.0 から v0.14.2 への移行のみを処理しています。多くの移行を行う必要があるため、最初からバージョンのオフを処理するかどうか混乱しました。したがって、ユーザーが v0.14.0 より前のバージョンからアプリを更新する場合、移行時にレルムを手動で削除したいと考えています。どうやってするか?
私はこれが好きですが、私はまだ持っていますRealmMigrationNeededException
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
RealmSchema schema = realm.getSchema();
if (oldVersion == 0) {
//update from v0.10.5 / update from v0.13.0
if (schema.get("User").hasField("blocks") || !schema.get("Contact").hasField("pinned")) {
realm.deleteAll();
return;
}
addField(schema, "Message", "messageDuration", int.class);
addField(schema, "Message", "starred", boolean.class);
oldVersion++;
}
if (oldVersion == 1) {
if (!schema.contains("PhoneBook")) {
schema.create("PhoneBook")
.addField("phone", String.class)
.addPrimaryKey("phone")
.addField("name", String.class)
.addField("image", String.class);
}
if (schema.contains("RealmString")) {
schema.remove("RealmString");
}
oldVersion++;
}
}