我需要从用户手动填充的Genesis设备的Android应用程序中获取SQLite数据库。
我如何创建另一个应用程序或任何其他方式来获取此数据库并保存到我可以获得的位置?
obs:设备有root
由于
答案 0 :(得分:13)
从cmd上的Android /平台工具开始的步骤:
1)输入adb shell
2)run-as
com.your.package
3)输入ls
cache
databases
lib
您可以在此处找到Database
...此外,您甚至不需要root
设备
希望这对你有帮助......
答案 1 :(得分:4)
如果您将设备连接到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文件资源管理器。
答案 2 :(得分:1)
在Marshmallow上尝试了几十个对我不起作用的命令后,我发现这个命令有效(至少对于可调试的应用程序):
adb shell "run-as your.package.name cp /data/data/your.package.name/databases/you-db-name /sdcard/file_to_write"
然后,您只需使用aSQLiteManager查看数据库。
答案 3 :(得分:1)
您可以使用此脚本。
您应该知道应用程序包名称和sqlite数据库名称。 您可以查看可用的数据库。
$ adb shell
$ run-as <package-name>
$ ls databases/
转储数据库或其他文件。
./humpty.sh -d <package-name> databases/<db-name>
答案 4 :(得分:1)
您可以在应用中包含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"
```
只要ApplicationManifest.xml不包含“backup = false”
,上述方法都不需要您的设备被root,后者甚至可以在您自己编写的应用上工作。答案 5 :(得分:1)
非常容易做到
在Android Studio的最新版本中(我使用的是AS v3.1.2),Google团队确实非常直接。您只需打开设备文件资源管理器窗口,该窗口应位于右侧垂直工具栏的底部,如果找不到它,您也可以这样打开它:
查看 - &gt;工具Windows - &gt;设备文件资源管理器
打开设备文件资源管理器窗口后,使用鼠标导航到以下路径:
数据 - &gt;数据 - &gt; your.package.name - &gt;数据库
在数据库文件夹中,您应该看到要浏览的数据库,右键单击并另存为...选择所需的计算机目标文件夹并瞧!!