Answers:
仿真器的文件系统未映射到硬盘驱动器上的目录。仿真器的磁盘映像存储为映像文件,您可以通过Eclipse(在工具栏中查找外观为G1的图标)或仿真器二进制文件本身(运行“ emulator -help”以获取选项说明)进行管理。 。
最好从命令行使用adb插入正在运行的仿真器。如果可以获得特定的目录和文件名,则可以执行“ adb拉取”操作,将数据库文件从仿真器中取出并放到常规硬盘上。
编辑:删除了建议,该建议也适用于无根设备-仅适用于仿真器以及您以root用户身份运行adb的设备。
adb pull
(即使具有正确的路径!)。
adb pull /data/data/com.activeandroid.test/databases/Application.db ~/Development/Application.db
以下评论中提到的更新:
您不再需要使用DDMS透视图,只需从Eclipse 窗口>显示视图>其他打开文件资源管理器,似乎该应用程序甚至不需要运行,我可以在不同的应用程序文件中浏览内容。我正在运行ADB版本1.0.29
或者,您可以尝试旧方法:
在Eclipse IDE上打开DDMS透视图
(窗口>打开透视图>其他> DDMS)
最重要的是:
您的应用程序必须正在运行,这样您才能看到文件夹和文件的层次结构。
然后在“ 文件资源管理器”选项卡中,您将遵循以下路径:
数据>数据>您的软件包名称>数据库>您的数据库文件。
然后选择文件,单击屏幕右上角的磁盘图标以下载.db文件。如果要将数据库文件上传到仿真器,则可以单击电话图标(在软盘图标旁边),然后选择要上传的文件。
如果您想查看.db文件的内容,建议您使用SQLite数据库浏览器,您可以在此处下载。
PS:如果您想从真实设备上查看数据库,则必须为手机加电。
Failed to pull selection
(null)
我编写了一个简单的bash脚本,该脚本将数据库从android设备拉到您的计算机(Linux,Mac用户)
filename:android_db_move.sh用法:android_db_move.sh com.example.app db_name.db
#!/bin/bash
REQUIRED_ARGS=2
ADB_PATH=/Users/Tadas/Library/sdk/platform-tools/adb
PULL_DIR="~/"
if [ $# -ne $REQUIRED_ARGS ]
then
echo ""
echo "Usage:"
echo "android_db_move.sh [package_name] [db_name]"
echo "eg. android_db_move.sh lt.appcamp.impuls impuls.db"
echo ""
exit 1
fi;
echo""
cmd1="$ADB_PATH -d shell 'run-as $1 cat /data/data/$1/databases/$2 > /sdcard/$2' "
cmd2="$ADB_PATH pull /sdcard/$2 $PULL_DIR"
echo $cmd1
eval $cmd1
if [ $? -eq 0 ]
then
echo ".........OK"
fi;
echo $cmd2
eval $cmd2
if [ $? -eq 0 ]
then
echo ".........OK"
fi;
exit 0
由于问题不仅限于Android Studio,所以我给出了Visual Studio 2015(适用于Xamarin)的路径。
特别感谢这个问题的其他回答者。
数据库作为SQLite文件存储在/ data / data / PACKAGE / databases / DATABASEFILE中,其中:
您可以在仿真器中选择DDMS透视图,在File Explorer选项卡中查看(从/复制到文件系统)数据库文件。
1 请参阅当前可用的设备/仿真器列表。
$ adb devices
连接的设备列表
G7NZCJ015313309设备仿真器-5554设备
9885b6454e46383744设备
2 在设备/仿真器上运行备份
$ adb -s emulator-5554 backup -f ~/Desktop/data.ab -noapk com.your_app_package.app;
3 提取数据
$ dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -;
您将在/db
文件夹中找到数据库
$ dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
bash: adb: command not found
对于Android Studio 3.5,请按照以下说明进行操作:https : //developer.android.com/studio/debug/device-file-explorer (查看->工具Windows->设备文件资源管理器->->数据库