Android Studioで開発しているAndroidアプリのデータベース(SQLite)の中身をターミナルから確認する

tank

Android Studioを使ってAndroidアプリを開発している時に、アプリで使っているデータベース(SQLite)にターミナルからアクセスして中身を確認する方法を書いておきます。使っているAndroid StudioはMac版です。

Android Studioのエミュレータを起動した状態で、ターミナル上で行います。

エミュレータのデータベースの中身を確認する

Androidアプリのデータベースの中身を確認するには、アンドロイド・デバッグ・ブリッジ(Android Debug Bridge、ADB)というモノを使います。

Android Debug Bridge は adb と省略されます。 これは Android SDK の platform-tools に含まれるツールです。

このツールを用いると、現在利用可能なデバイス・エミュレータの列挙、シェルコマンドの発行、ファイルの転送などが行えます。

出典:Android Debug Bridge (adb) とは? – Android 開発入門

このADBというモノがどこにあるかというと、Androidのライブラリの中のSDKの中のplatform-toolsの中にあります。わたくしの場合、”/Users/okuzawats/Library/Android/sdk/platform-tools/”という場所にあります。ここに移動しておきます。

cd /Users/okuzawats/Library/Android/sdk/platform-tools/

platform-toolsの中に移動したら、Android ADB Shellを立ち上げます。

./adb shell

こんな感じでシェルが起動します。

android adb shell

各アプリのデータベースは、”/data/data/パッケージ名/databases”にあるので、まずはここに移動します。

cd /data/data/com.example.mysampleapp/databases

この中に、hoge.db、hoge.db-journalといった感じでSQLiteのデータベースがあるので、これにアクセスします。

sqlite3 hoge.db

これでSQLiteを使って開発中のAndroidアプリのデータベースにアクセスできたと思います。あとはSQLiteのコマンドを使って中身を確認したり、場合によっては変更したりしていきます。

実機のデータベースの中身を確認する

実機の場合、権限の関係とかがあって直接データベースの中身を確認するのが難しいので、データベースをコピーして中身を確認します。

はじめに、run-asコマンドを使って、データベースのコピーを作成します。run-asコマンドを使うことにより、アプリ自身になりすまして権限を獲得、一転攻勢してデータベースをコピーします。

adbのシェルの中で、こんな感じでコマンドします。com.example.sampleAppの部分は、各アプリのパッケージ名を使います。ここでは、SDカードにデータベースをコピーしています。

run-as com.example.sampleApp cat /data/data/com.example.sampleApp/databases/hoge.db > /sdcard/hoge-copy.db

次にpullコマンドを使ってSDカードにコピーしたデータベースをローカルに持ってきます。

adb pull /sdcard/hoge-copy.db

ローカルにデータベースファイルが保存されたら、SQLiteのコマンドを使ってデータベースの中身を確認できるようになります。

ところで、SQLiteの勉強には「SQLite入門 第2版」がオススメです!数少ないSQliteの入門書です。

シェアしてもらえるとうれしいです。゚(´っωc`)゚。