从Android应用程序获取SQLite数据库

我需要从用户手动填充的Genesis设备获取Android应用程序的SQLite数据库。

我如何创建另一个应用程序或任何其他方式来获取此数据库并保存在我可以获得的位置?

obs。:设备有root

谢谢

在cmd上的Android / …平台工具的步骤:

1)输入adb shell

2) run-as com.your.package

3)typesls

 cache databases lib 

你可以在这里find你的Database ……你甚至不需要root设备

希望这对你有帮助…

如果您将设备连接到PATH上带有adb的框,则可以使用此命令:

 adb -d shell 'run-as your.package.name.here cat /data/data/your.package.name.here/databases/your_db_name_here.sqlite > /sdcard/recovered_db.sqlite' 

或者您可以使用Ecliplse DDMS文件资源管理器。

在Marshmallow上尝试了几十个对我不起作用的命令后,我发现这个命令有效(至少对于可调试的应用程序):

 adb shell "run-as your.package.name cp /data/data/your.package.name/databases/you-db-name /sdcard/file_to_write" 

然后,您只需使用SQLiteManager查看数据库即可 。

您可以使用此脚本。

humpty.sh

您应该知道应用程序包名称和sqlite数据库名称。 您可以检查可用的数据库。

 $ adb shell $ run-as  $ ls databases/ 

转储数据库或其他文件。

 ./humpty.sh -d  databases/ 

您可以在应用中包含Stetho库,

http://facebook.github.io/stetho/

这将允许您使用Chrome的Web调试工具访问您的数据库

或使用以下shell脚本:

 #!/bin/bash echo "Requesting data from Android" adb backup -f data.ab -noapk YOUR.APK.NAME echo "Decoding...." dd if=data.ab skip=24 iflag=skip_bytes | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf - rm data.ab echo "Done" 

“`

上述方法都不需要您的设备被root,后者甚至可以在您自己编写的应用程序上工作,只要ApplicationManifest.xml不包含“backup = false”

非常方便的做法

在Android Studio的最新版本中(我使用的是AS v3.1.2),Google团队已经非常直接。 您只需打开设备文件资源管理器窗口,该窗口应位于右侧垂直工具栏的底部,如果找不到它,您也可以这样打开它:

查看 – >工具窗口 – >设备文件资源管理器

打开“设备文件资源管理器”窗口后,使用鼠标导航到以下路径:

data – > data – > your.package.name – > databases

在数据库文件夹中,您应该看到要浏览的数据库,右键单击并另存为…选择所需的计算机目标文件夹并瞧!!