7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android SQLiteのファイルをadbコマンドで取得

Posted at

AndroidでSQLiteのデータベースを作成すると
/data/data/[パッケージ名]/databasesディレクトリの中に、プログラムで指定したデータベース名のファイルが作成されます。

そのファイルの内容を確認したい場合、下記のコマンドをコマンドプロンプト(ターミナル)で実行することでデータベース・ファイルの内容をコマンドプロンプト(ターミナル)内で確認できます。

adb shell run-as [パッケージ名] cat databases/[データベース・ファイル名]

Rubyをインストールしてある環境で下記のコマンド実行することで、スマホ内にあるデータベース・ファイルをパソコンにコピーできます。

adb exec-out run-as [パッケージ名] cat databases/[データベース・ファイル名] | ruby -pne '' > /[保存したいパソコンのディレクトリ]/[保存したいファイル名]

例えば、パッケージ名がjp.co.xxx.yyy データベースのファイル名がdatabase.db 保存したいパソコンのディレクトリが/Users/taro/Desktop 保存したいファイル名がdump.dbの場合、
adb exec-out run-as jp.co.xxx.yyy cat databases/database.db | ruby -pne '' > /Users/taro/Desktop/dump.db
を実行するとスマホ内のdatabase.dbのコピーであるdump.dbファイルが/Users/taro/Desktopに生成されます。

同様にしてアプリ内に保存したpreferencesのファイルもパソコンにコピーできます。

アプリで作成したpreferencesの値はxmlファイルとして/data/data/[パッケージ名]/shared_prefsに保存されます。
上記のデータベースのファイルをコピーしたのと同様に
adb exec-out run-as [パッケージ名] cat shared_prefs/[preferencesのxmlファイル名] | ruby -pne '' > /[保存したいパソコンのディレクトリ]/[保存したいファイル名]
を実行するとpreferencesのkeyとvalueが記録されたxmlファイルをスマホからパソコンにコピーできます。

毎回コマンドを入力するのは面倒なのでバッチファイル(.bat)やシェルスクリプト(.sh)を作成しておくとマウスのクリックひとつでスマホからパソコンにファイルをコピーできるので便利でしょう。

※コマンドプロンプト(ターミナル)でどこのディレクトリからでもadbやrubyコマンドを実行できるようにPathを通しておきましょう。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?