Android端末からSQLiteのDBファイルを取得する
Android端末からSQLiteのDBファイルを取得する方法について調べました。
準備
Android SDK が入っていない場合は、Android Studio をインストールするなどして入れておきます。
そのままの状態だと adb
コマンドが使えないので、platform-tools
ディレクトリにパスを通しておきます。
僕の環境では、~/Library/Android/sdk/platform-tools
でした。
パスを通したら adb
コマンドが使えることを確認します:
adb version
DBファイルの確認
まず、DBファイルがあることを確認します:
adb shell run-as {パッケージ名} ls -l databases
DBファイルの取得(Android 4.4 以下)
Android 4.4 以下の場合は、以下のコマンドで取得できます:
adb shell run-as {パッケージ名} cat databases/{DBファイル名} > {DBファイル名}
なお、AndroidManifest.xml
で <application android:debuggable="false">
と指定されていると取得できないようです(未検証)。
DBファイルの取得(Android 5.0 以上)
Android 5.0 以上の場合は、上記のコマンドを実行すると、ファイルサイズがゼロになってしまいます。(これでかなり悩みました。)
以下のコマンドで取得できました:
adb shell run-as {パッケージ名} cat databases/{DBファイル名} | perl -pe 's/\r\n/\n/' > {DBファイル名}
おまけ
Stetho というツールを使うと、Chrome から確認できるようなので、開発時にちょっと見る程度ならこれで十分ですね。
後で調べてみたいと思います。
参考情報