GenymotionのVirtual Devices(またはエミュレーター)からDBを取り出す

新規インストール用のデータを作成するために予めアプリで作成したものを取り出したので、その作業ログを残す

もちろんGenymotionだけではなく、エミュレーターでも可能です。

DBをアクセスできる場所にコピー

  • <database.name>は拡張子を含めた名前(例:test.db)

  • Genymotion 2.3

$ adb shell su -c cp /data/data/<package.name>/databases/<database.name> /sdcard/
  • それ以外のバージョン
$ adb shell su 0 cp /data/data/<package.name>/databases/<database.name> /sdcard/

ローカルに保存

  • コピーしたDBをローカルに保存します。
$ cd <DBを保存したいディレクトリ>
$ adb pull /sdcard/<database.name>

DumpファイルをSQLファイルに変換

  • dumpファイルはバイナリ形式になっているため、これをSQLファイルに変換する
$ sqlite3 <database.name> .dump > dump.sql

SQLファイルから不要な箇所を削除する

$ vim dump.sql

===削除する箇所===
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
COMMIT;

あとは出来たファイルをassetsフォルダに入れて、SQLiteOpenHelperのonCreateなりで読み込み 一行ずつ実行すれば完了

参考