Android端末のデータベース(SQLite)の中身を簡単に見る方法


開発しているとデータベースの値を見たいときがあると思います。
しかし、調べると古い情報にあたって出来なかったりするので、今現在の情報をまとめました。

この記事の環境

  • Android端末・・・ Android 8.0.0 ASUS_Z01KDA(ZenFone 4)
  • エディタ・・・ Android Studio 3.1.4
  • PC ・・・ Windows 10

概要

SQlite3は1つのsqliteファイル(一般的に.sqlite3の拡張子)にデータベース情報の全てが入っているので、そのsqliteファイルを端末から自分のPCにコピーしてDB Browser for SQLiteなどで確認すれば中身を見ることができる。

Android StudioのDevice File Exploreでコピー

端末からのコピーはAndroid Studio のDevice File Exploreを使うと楽にコピーができる。

右下の「Device File Explore」をクリック

クリックすると端末内のファイルエクスプローラーが表示される。

sqliteファイルの場所は/data/data/(アプリのパッケージ名)/databases/(sqliteファイル名)にある
※sqliteファイル名はSQLiteOpenHelperクラスを継承したクラスで指定した名前になる

sqliteファイル上で右クリック→保存 で自分のPCの好きな場所に保存できる

コマンドでsqliteファイルをコピー

Terminalから下記のコマンドでsqliteファイルがコピーできます

adb exec-out run-as (アプリのパッケージ名) cat databases/(sqliteファイル名) > (コピー先の自分のPCでのパス名)

解説

  • adb exec-out (コマンド) ・・・コマンド自体の解説は出てこなかったのだが、おそらくadb shellとして端末にログインしたときのユーザーとしてコマンドを実行し、その端末での標準出力を自分のPCでの出力として出力するコマンドではなかと思う。
  • run-as (アプリのパッケージ名) (コマンド) ・・・そのアプリのパッケージのユーザーとして実行するコマンド。 /data/data/(アプリのパッケージ名)/がそのユーザーのホームディレクトリになる。

ググったらよくある

  1. 端末のsqliteファイルを端末内でみんながアクセスできる場所(SDカードなど)にcat (コピー元) > (コピー先)でコピー
  2. そこからadb pullで自分のPCにコピー

という手法は今は1.ができないのでできません。

参考リンク