くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

ADBとDB Browser for SQLiteでAndroid実機のDBを確認する on Ubuntu 15.04

Androidアプリを開発していると、DBの中身をみて確認したくなるけど、adb shellでsqlite3コマンドを叩くのはめんどくさい。。。

DB Browser for SQLite(旧 SQLite Database Browser)なんていう

GUIベースのすてきなツールもあるようなので、導入してみた際の備忘録

環境はいつもどおり、Ubuntu 15.04 64bit

DB Browser for SQLiteのインストール

配布形式はzip, tar.gzなどいろいろあるけれど、

Ubuntu用のリポジトリ(SqliteBrowser Stable PPA : Gajj GNDU)が公開されているのでそちらをつかう

# インストール
$ sudo add-apt-repository ppa:linuxgndu/sqlitebrowser # リポジトリの登録
$ sudo apt-get update                                 # リポジトリを追加したので更新
$ sudo apt-get install -y sqlitebrowser               # SqlibBrowserをインストール

実行はこんな感じ

$ sqlitebrowser         # 実行はこれだけ
$ sqlitebrowser <file>  # 開くファイルを指定して実行もできる

実機のDBの中身を確認する

DB Browser for SQLiteを使って実機の中のDBは見れないので、ローカルにコピーする

実機の場合は権限とかの関係で、参照可能な場所にコピーしてからadb pullする必要があるらしい

$ set PACKAGE_NAME='....'                                                             # 確認したいアプリのパッケージ名をセット
$ adb -d shell 'run-as ${PACKAGE_NAME} cat databases/${PACKAGE_NAME}.db > /sdcard/db' # 一旦、参照可能な場所にコピー
$ adb pull /sdcard/db db                                                              # adb pullで移動したファイルをPULL

めんどくさいので、まとめて実行するコマンドを作成

めんどくさいので、bashrcに一括で実行する関数(adb-dbbrowse)を作った

# Function
adb-dbbrowse () {
  if [ $# -ne 1 ]; then
    echo "usage:: adb-dbbrowse <app-package-name>"
  else
    # setup parameter
    PACKAGE_NAME="$1"
    DBFILE_NAME="${PACKAGE_NAME}.db"
    TEMPFILE_PATH='/sdcard/db'
    # main
    adb -d shell "run-as ${PACKAGE_NAME} cat databases/${DBFILE_NAME} > ${TEMPFILE_PATH}" && \
    adb pull ${TEMPFILE_PATH} ${DBFILE_NAME} && \
    sqlitebrowser ${DBFILE_NAME}
  fi
}

# How to Use
$ adb-dbbrowse <確認したいアプリのパッケージ名>

これでかなり快適に!!以上!!

参考にしたサイト様