エミュレータを使用しない場合の最も簡単な方法
$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name
警告:
私はしばらくこれをテストしていません。API>=25 では動作しない場合があります。cp コマンドが機能しない場合は、代わりに次のいずれかを試してください。
# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>
# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name
説明:
最初のブロックは、データベースのアクセス許可を読み取り可能に構成します。これrun-as
により、パッケージのユーザーになりすまして変更を行うことができます。
$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the shell started with run-as
次に、データベースを誰でも読み取り/書き込み可能なディレクトリにコピーします。これにより、adb プル ユーザー アクセスが許可されます。
$ cp /data/data/your.package.name/databases/database_name /sdcard
次に、既存の読み取り/書き込み権限を置き換えます。これはアプリのセキュリティにとって重要ですが、権限は次回のインストール時に置き換えられます。
$ run-as your.package.name
$ chmod 660 databases/database_name
$ chmod 660 databases
$ exit # Exit the shell started with run-as
最後に、データベースをローカル ディスクにコピーします。
$ exit # Exits shell on the mobile device (from adb shell)
$ adb pull /sdcard/database_name