iOS シミュレータと iOS 実機で Cordova アプリの SQLite DB ファイルを取得するには

Apache Cordova を使って iOS アプリを作る時、cordova-sqlite-storage プラグインを導入して、クライアントサイドに SQLite を使ったローカル DB を構築することがある。

SQLite なので、DB のデータは .db という拡張子の1つのファイルに全て保存されており、適当な DB ビューアに取り込めば中身が見られる。

今回は iOS シミュレータと iOS 実機のそれぞれで、SQLite DB ファイルの取得方法を紹介する。なお、Cordova アプリに限らず、SQLite を使用する iOS アプリならいずれもほとんど同じやり方で取得できると思うので、参考にしてほしい。

iOS シミュレータの場合

Mac 上の iOS シミュレータで Cordova アプリを動作させた場合は、以下のようなディレクトリに .db ファイルが格納されているので、これを参照すれば良い。

~/Library/Developer/CoreSimulator/Devices/【デバイスの識別子】/data/Containers/Data/Application/【アプリの識別子】/Library/LocalDatabase/【DB ファイル名】.db

デバイスの識別子とアプリの識別子のディレクトリ名が分かりづらいので、ターミナルで以下のように検索すると良い。

# まずは「デバイスの識別子」ディレクトリがある階層まで移動する
$ cd ~/Library/Developer/CoreSimulator/Devices/

# カレントディレクトリ配下を「DB ファイル名」で検索する
$ find . -name 【DB ファイル名】.db

# スペースを含む場合はシングルクォートかダブルクォートのどちらかで囲めば良い
# ワイルドカード等も使えるので以下のようにも調べられる
$ find . -name '*.db`

iOS 実機の場合

一方、iOS 実機で Cordova アプリを動作させた場合は、以下のようにして .db ファイルを取り出すことができる。

  1. iOS 実機を Mac に USB 接続しておく。
  2. XCode を開き、メニューの Window → Devices を選択する。
  3. 「Devices」ペインから対象の端末を選択する。
  4. 右ペインの「Installed Apps」から対象のアプリを選択し、歯車アイコンから「Download Container…」をクリックする。
  5. 【アプリの識別子】.xcappdata というファイルがダウンロードできる。
  6. このファイルを Finder で右クリックし、「パッケージの内容を表示」で開く。
  7. AppData/Library/LocalDababase/【DB ファイル名】.db に DB ファイルが存在する。

あとはこの DB ファイルをどこかにコピーして、適当な DB ビューアで開けば OK。

DB ビューアは「DB Browser for SQLite」が手軽に見られてオススメ。