概要
- Realm の model を変えた場合は、一旦アプリを uninstall しておかないと、migration が必要だよという RealmMigrationNeededException を吐く
- というのは、model が変わったから当然なんだけど、いつからか uninstall → install しても同じ exception を吐くようになって謎だったのでメモ
- デバイスから *.realm を全部消して、package 名が入っているディレクトリ・ファイルを全部消しても、「model にメンバが1つ増えたから migration しろ」的な exception を吐くから謎すぎた
原因
- ここ に書かれている通り、auto-backup が効いてて、uninstall → install しても実行する前に古いデータでリストアされるので、exception を吐くのだった。。そんな気もしたけど、、ちょっとハマった^^;
解決方法
以下のどれかで良さそう(一番上しか確認してない)
AndroidManifest.xml の
application
element のandroid:allowBackup
attribute を false にしてバックアップを無効にする上記サイトに書かれてる通り、res/xml/backup.xml でバックアップするファイルから realm 関係を exclude する
サーバ側のデータを消すには
adb shell bmgr wipe com.google.android.gms/.backup.BackupTransportService <package.name>
とするらしいサーバ名(↑の
com.google.android.gms/.backup.BackupTransportService
の部分)は、
adb shell bmgr list transports
を実行して * が付いているところ
ここに書かれている通り、res/xml/backup.xml でバックアップするファイルを include する