私がAndroidStudioでAndroidアプリの開発を行っているとき、SQLiteを使っていてデータの内容を確認できないのかなと思い、こちら(←リンク)を参考にしてDBeaver(DB管理ツール)にデータの内容を表示することができたので備忘録としてまとめておきます。
- SQLiteとは
ざっくり説明するとSQLiteはAndroidのSDKが標準サポートしているデータベースです。詳しくは以下参照。
DBのパスワードを取得できるか
後々に使うので一旦飛ばしてもいいですが、DBのパスワードを取得できないと後でつまずくので先に取得できるかを確認します。
開発環境によって違うとは思いますが、私はDatabaseオブジェクトを取得する部分をデバッグモードで止めてパスワードを確認しました。
SqlCipherのドライバのライブラリをダウンロード
以下からsqlite-jdbc-3.44.2.0.jar
をダウンロード。(数字は最新版)
- SqlCipherとは
SqlCipherはSQLiteデータベースを拡張し、同じインターフェイスで暗号化されたローカルデータストレージを提供するオープンソースのライブラリです。
DBeaverでカスタムドライバの作成
DBeaverのメニューバーからデータベース⇒ドライバマネージャー⇒新規をクリック。
設定タブ
ライブラリタブ
接続プロパティタブ
右クリックから新しいプロパティを追加
- cipher =
sqlcipher
- fast_kdf_iter =
2
- hmac_algorithm =
0
- hmac_pgno =
1
- hmac_salt_mask =
0x3a
- hmac_user =
1
- kdf_iter =
64000
- legacy =
3
- legacy_page_size =
1024
- key は事前に取得しておいたパスワードを設定するがここでは空欄
ここまで設定したらOK
Android端末からDBファイルを取得する
AndroidStudioでツールバーのWindow⇒Device Manager⇒デバイス右のオプションからOpen in Device Explorer
開発環境によって違うとは思いますが、私は/data/data/(プロジェクト名)/databases/
にあったのでそれをPCにダウンロード。
いざ接続
一般タブ
ドライバのプロパティタブ
keyプロパティに最初に確認しておいたパスワードを設定⇒テスト接続して問題なければ終了