読者です 読者をやめる 読者になる 読者になる

くらげになりたい。

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

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 <確認したいアプリのパッケージ名>

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

参考にしたサイト様