Méthode la plus simple lorsque l'on n'utilise pas d'émulateur
$ 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
Mises en garde :
Je n'ai pas testé cela depuis un certain temps. Il se peut que cela ne fonctionne pas sur API>=25. Si la commande cp ne fonctionne pas, essayez plutôt l'une des commandes suivantes :
# 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
Explication :
Le premier bloc configure les autorisations de lecture de votre base de données. Il s'appuie sur run-as
qui vous permet de vous faire passer pour l'utilisateur de votre paquet pour effectuer le changement.
$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the shell started with run-as
Ensuite, nous copions la base de données dans un répertoire lisible/écrivable par le monde entier. Cela permet à l'utilisateur adb pull d'accéder à la base de données.
$ cp /data/data/your.package.name/databases/database_name /sdcard
Remplacez ensuite les privilèges de lecture/écriture existants. Ceci est important pour la sécurité de votre application, cependant les privilèges seront remplacés lors de la prochaine installation.
$ run-as your.package.name
$ chmod 660 databases/database_name
$ chmod 660 databases
$ exit # Exit the shell started with run-as
Enfin, copiez la base de données sur le disque local.
$ exit # Exits shell on the mobile device (from adb shell)
$ adb pull /sdcard/database_name