我想提取我的Android数据库,以便我可以检查它,但我无法弄清楚如何。我知道两种常用方法(例如,adb pull和复制到SD卡)。我已成功使用"复制到SD卡"以前的方法,但这些方法中没有一个现在适合我。
我说"现在"因为我使用 this 方法使用此版本的应用程序切换到预先填充的数据库。
当我使用adb shell
和cd
到/data/data/com.myapp/databases/
时,这就是我在运行ls -l
时看到的内容:
drwxrwx--x u0_a106 u0_a106 2017-07-19 11:03 cache
drwxrwx--x u0_a106 u0_a106 2017-07-19 11:03 databases
lrwxrwxrwx install install 2017-07-19 11:03 lib -> /data/app-lib/com.myapp
drwxrwx--x u0_a106 u0_a106 2017-07-19 11:03 shared_prefs
请注意,即使我在适当的数据库中也是如此。子目录,还有另一个"数据库"目录下面。
现在,当我执行此命令时:
run-as com.myapp ls -l databases
我明白这一点:
-rw-rw---- u0_a106 u0_a106 21504 2017-07-19 15:53 MYDB
-rw------- u0_a106 u0_a106 8720 2017-07-19 15:53 MYDB-journal
我的数据库(更深层次)和#34;数据库"目录。我尝试使用adb pull
命令,但Android告诉我/data/data/com.myapplicaiton/databases/MYDB does not exist
。
所以,我尝试了下一个级别,但仍然得到/data/data/com.myapplicaiton/databases/databases/MYDB does not exist
。
然后我尝试使用"复制到SD卡"方法。我得到一个数据库,但它的大小是0字节。
很奇怪,因为我显然可以看到数据库存在且大小超过0字节。
所以...发生了什么,我怎样才能获得我的数据库?
感谢。
修改
根据请求,我添加了用于提取数据库的代码:
adb shell run-as com.myapplication cat /data/data/com.myapplication/databases/MYDB > /mnt/ext_sdcard/MYDB.db
我也尝试过:
adb shell run-as com.myapplication cat /data/data/com.myapplication/databases/databases/MYDB > /mnt/ext_sdcard/MYDB.db
然后我使用adb pull /mnt/ext_sdcard/MYDB.db
从平板电脑中检索它。
答案 0 :(得分:0)
您可以使用命令
获取驻留在可调试应用程序的/data/data/package_name
文件夹中的任何文件
adb exec-out run-as package_name cat remote_file > local_file
在你的情况下,它看起来像这样
adb exec-out run-as com.myapp cat databases/MYDB > target_file