从我的Android应用程序中提取数据库的正确方法是什么?

时间:2016-06-08 06:16:16

标签: java android sqlite

我一直试图从我的索尼xperia android设备(OS:JellyBean 4.1.2)中取出sqlite数据库,我在某些情况下调查了不同的stackoverflow线程我收到错误  "run-as: Package 'com.myapp' is unknown", 在某些情况下,mydata.db文件显示在我的计算机目录中,但大小为零。是否有任何正确的方法来拉出数据库?为此目的,谷歌有任何指南吗? 注意我已经访问了以下主题: android adb, retrieve database using run-as

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以使用adb pull <path-to-db-on-phone> <path-on-your-pc>。如果您收到任何权限错误:执行adb remount,然后再次尝试上述命令。

答案 1 :(得分:-1)

我找到了解决方案。

首先运行此命令

adb backup -f ~/data.ab -noapk app.package.name[![enter image description here][1]][1]

只需点击&#34;备份我的数据&#34;按钮。屏幕将显示您要备份的软件包的名称,然后在成功完成后自行关闭。

由此产生的&#34; .ab&#34;文件包含android备份格式的应用程序数据。

快速提取简单的非加密备份运行:

dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -

有可能并非所有openssl安装都使用zlib支持进行编译。这是一个替代单行程序,它使用python来实现相同的结果:

dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -

结果是包含应用程序数据的apps / app.package.name /文件夹。

注意:如果应用程序开发人员通过设置android:allowBackup =&#34; false&#34;来明确禁用备份其应用程序的能力,则此方法不起作用。在应用程序清单中。

点击此链接:http://blog.shvetsov.com/2013/02/access-android-app-data-without-root.html