android実機のローカルDBの中身を見るシェルを作った

      2016/03/15

Androidの開発中に実機検証していると端末で保存したローカルDBの中身を見たくなることが多々あるのですが、adbで実機接続中は直接sqlite3で開くことが出来ないので一度DBファイルを開発PCにpullしてから開かなくてはいけません。
この手順が毎回やっていると非常に面倒なので、mac用のシェルスクリプトを作りました。

ファイル名:getdb

#!/bin/bash
if [ $# != 2 ]; then
    echo "usage: $0 package_name db_filename" 1>&2
    exit 0
fi

adb shell "run-as $1 chmod 666 /data/data/$1/databases/$2"
adb shell "run-as $1 cp /data/data/$1/databases/$2 /sdcard/$2"
adb pull /sdcard/$2 /tmp/
sqlite3 /tmp/$2

./getdb パッケージ名 DBファイル名
の形式で実行します。

コマンドを実行するたびにmac側の/tmp配下にDBファイルを持ってきてsqlite3で開くようにしています。

また、GUIのツールがMacにインストールしてあれば、そちらから開くようにすることも出来ます。
ということで、Applications配下にインストール済みのsqlitebrowserから開くようにしてみました。

#!/bin/bash
if [ $# != 2 ]; then
    echo "usage: $0 package_name db_filename" 1>&2
    exit 0
fi

adb shell "run-as $1 chmod 666 /data/data/$1/databases/$2"
adb shell "run-as $1 cp /data/data/$1/databases/$2 /sdcard/$2"
adb pull /sdcard/$2 /tmp/
open -a "/Applications/sqlitebrowser.app" /tmp/$2

修正したのは最後の行でdbファイルを開くところだけです。
作業がとてつもなく楽になりましたね。

さらに、次の記事にてDBファイルを更新するシェルもつくりました。

 - 技術系(アプリ) , ,