2
6

More than 3 years have passed since last update.

【Android】adb shell でエミュレーターの SQLite にアクセスする方法

Posted at

はじめに

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 にマークがついていないエミュレーターを選択してください(私はここでハマりました...)。

スクリーンショット 2020-11-15 20.28.25.png

参考:
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 コマンドを叩くことができます!

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6