Room.databaseBuilder(appContext, TestDatabase.class, “Sample.db”) .createFromAsset(“database/myapp.db”) .build()
Room.databaseBuilder(appContext, TestDatabase.class, “Sample.db”) .createFromFile(File(“mypath”)) .build()
🚫 インメモリ データベースでは、createFromAsset または createFromFile によるデータベースへのデータの事前取り込みをサポートしていません。この処理を行おうとすると RoomDatabase.build() メソッドは IllegalArgumentException をスローします。
💡 Room では、@Database アノテーションの exportSchema パラメータを使ってデータベース スキーマの書き出しが可能となっています。そのため、あらかじめパッケージ化されたデータベースを作成する際は、そこに定義されているスキーマを使用します。
On device db version, @RoomDatabase version, Pre-packaged db version, Migrations, Data copied 2, 4, 3, destructive, No 2, 4, 4, destructive, Yes 2, 4, 3, implemented, Yes and migrations run
💡あらかじめパッケージ化データベースのバージョンと、@RoomDatabase アノテーションで宣言されている最新のバージョンを同じにすることをおすすめします。そうすることで、マイグレーションのケースに対処する必要がなくなります。 📖 Room でのマイグレーションについて詳しくはこちらのブログ投稿を、マイグレーションのテストについてはこちらをご覧ください。