はじめに
Android 開発で SQLite の中身を確認したいとき、データをローカルに持ってきて DB Browser for SQLite を使う方法もありますが、何度も確認したいときにこれをやるのは少々手間になります。
CLI で DB の中身をササッと確認する方法を調べたのでメモしておきたいと思います。
1. エミュレーターの起動
起動させるエミュレーターは Google Play が実装されていないものを選びます。
市販の端末や Google Play が実装されているエミュレーターを使用すると、権限の問題で sqlite3 コマンドが実行できません。
Google Play が実装されているエミュレーターに adb shell
で入り、sqlite3
コマンドを叩いても not found
となります。
$ sqlite3
$ /system/bin/sh: sqlite3: not found
Play Store にマークがついていないエミュレーターを選択してください(私はここでハマりました...)。
参考:
https://teratail.com/questions/186703https://teratail.com/questions/186703
https://developer.android.com/studio/run/managing-avds?hl=ja#system-image
2. シェルの起動
プロジェクトのディレクトリに移動して以下のコマンドを叩くと、エミュレーターに対してシェルを実行できる状態になります。
$ cd /path/to/project
$ adb shell
3. 内部ストレージに移動
sqlite ファイルは端末内の以下のディレクトリに保存されています。
/data/data/パッケージ名/databases/
adb shell
を実行した段階ではこのディレクトリへのアクセス権限がないため、次のコマンドを叩いて権限を取得します(com.example.packagename
の部分は自分のパッケージ名に置き換えてください。)。
$ run-as com.example.packagename
すると /data/data/パッケージ名/
まで自動的に移動され、databases
ディレクトリにもアクセスできるようになります。
4. SQLite の実行
最後に以下のコマンドで SQLite が立ち上がるかと思います(my_database
は自分のデータベース名に置き換えてください)。
$ sqlite3 databases/my_database
SQLite version 3.22.0 2018-12-19 01:30:22
Enter ".help" for usage hints.
sqlite>
これで好きなように SQLite コマンドを叩くことができます!