デバッグするために、iOS のシミュレーター内で使っている SQLite に格納されているデータを確認したり、操作したいケースはあると思います。
どうやったら iOS のシミュレーターにある SQLite のデータに到達できるのかを説明する記事です。
結論、 ~/Library/Developer/CoreSimulator/Devices/<デバイスID>/data/Containers/Data/Application/<アプリケーションID>/Documents
にたどり着くまでの冒険です。
シミュレーターのIDを取得する
$ xcrun simctl list | grep Booted
iPhone SE (3rd generation) (6EE728ED-5826-469A-B12E-C2AEB4FF5D33) (Booted)
simctl
とは、 Xcodeに含まれる標準CLIツールで、主にシミュレータの管理を行うための機能を備えています。
以下のように1行で device_id
を取得すれば捗ると思います。
device_id=`xcrun simctl list | grep Booted | sed -nE 's/.*\(([^()]*)\).*Booted.*/\1/p'`
echo $device_id
cd ~/Library/Developer/CoreSimulator/Devices/${device_id}/data/Containers/Data/Application/
アプリケーションIDを取得する
~/Library/Developer/CoreSimulator/Devices/
のディレクトリ配下には様々なアプリケーションのIDが並びます。${device_id}
/data/Containers/Data/Application
今、開発中のアプリケーションIDを特定して、そのアプリケーションのテーブルのデータを確認したいのですが、アプリケーションIDを取得するには、原始的な方法を使うしかしかなさそうです。
まずシミュレーターを開きます。
Device
> Erace all contents and settings...
でコンテンツと設定を初期化します。
Expo のプロジェクトに移り、以下のコマンドでアプリケーションを起動します。
npx expo start --clear --tunnel
Expo サーバーを立ち上げたあと、ターミナルに i
(open iOS simulator)を打ち込むと、Expo Go がダウンロードされます。新たに Expo Go がインストールされるので、「最後にインストールされたアプリケーションが目的のアプリケーションである」と特定できるのです。
Application
ディレクトリ内で ls -ltr
コマンドを実行します。
cd ~/Library/Developer/CoreSimulator/Devices/${device_id}/data/Containers/Data/Application/
ls -ltr
1番下にできたフォルダが Application のフォルダです。
drwxr-xr-x@ 7 peayon staff 224 6 25 13:44 8F29387C-F239-40FE-96AF-BACC5F89C484
以下のように application_id
を取得すると捗ります。
application_id=`ls -ltr | tail -n 1 | awk '{print $NF}'`
echo $application_id
省略/Application/$application_id/Documents/ExponentExperienceData
まで移動すると、 %40anonymous%2Fアプリ名-id
のようなディレクトリがあります。
その下に SQLite
ディレクトリがあります。この SQLite ディレクトリの下に、 SQLite のデータベース情報があります。
上記の手順を簡単にする方法は以下のとおりです。
device_id=`xcrun simctl list | grep Booted | sed -nE 's/.*\(([^()]*)\).*Booted.*/\1/p'`
echo $device_id
cd ~/Library/Developer/CoreSimulator/Devices/${device_id}/data/Containers/Data/Application/
application_id=`ls -ltr | tail -n 1 | awk '{print $NF}'`
cd ~/Library/Developer/CoreSimulator/Devices/${device_id}/data/Containers/Data/Application/
${application_id}/Documents/ExponentExperienceData
ls -ltr
最後の ls
で %40pieyon%2Fsuccess-timeline
みたいなアプリケーション名のディレクトリが表示されるので、そこに移動しましょう。
%40pieyon%2Fsuccess-timeline/SQLite
に移動すると、テーブルファイルが見つかります。
Open .
で Finder を開いて確認しましょう。
SQLite
内にあるファイルを開けば、テーブルの内容を確認できます。テーブルの確認には、 DB Browser for SQLite
などがよく使われるようです。
自分が使っている DataGrip では、左側側にあるデータベースエクスプローラーにファイルをドラッグ・アンド・ドロップするだけでテーブルを開くことができました。