開発しているとデータベースの値を見たいときがあると思います。
しかし、調べると古い情報にあたって出来なかったりするので、今現在の情報をまとめました。
この記事の環境
- 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を使うと楽にコピーができる。
クリックすると端末内のファイルエクスプローラーが表示される。
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/(アプリのパッケージ名)/
がそのユーザーのホームディレクトリになる。
ググったらよくある
- 端末のsqliteファイルを端末内でみんながアクセスできる場所(SDカードなど)に
cat (コピー元) > (コピー先)
でコピー - そこから
adb pull
で自分のPCにコピー
という手法は今は1.ができないのでできません。
#参考リンク