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

      2016/03/15

前回は、ローカルDBの中身を取得するシェルを作りましたが。
今回はその応用で、取得してきたDBファイルを更新後にpushするシェルスクリプトを作りました。

ファイル名:pushdb

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

adb push /tmp/$2 /sdcard/
adb shell "run-as $1 cp /sdcard/$2 /data/data/$1/databases/$2"

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

流れとしては前回作ったgetdbでDBファイルを取得して、そのままsqlite3でデータを更新。
そのあとpushdbで更新したDBファイルをpushする形になりますね。
pushした後は、Androidアプリを一旦終了してから再度起動するとアプリ内でも反映されます。
※当たり前ですが、上記シェルでDB更新した後にアプリ側の処理でDBを更新されるとDBの値が再度変わってしまいますのでご注意ください。

実機のローカルDBを書き換えたい場面は開発中にもよくあると思うので、結構役に立つのではないでしょうか。

 - 技術系(アプリ) , ,