Android模拟器在哪里存储SQLite数据库?
我正在开发一个将数据存储在SQLite数据库中的Android应用程序。 我的问题是,当你使用模拟器时,这个数据库文件在什么地方存储在文件系统中?
我已经看到它存储在
/data/data/package_name/databases
但是我需要知道我的本地硬盘驱动器上实际映射的位置。 数据库在模拟器的多次运行中仍然存在,即使在closures机器之后也是如此,所以它不能驻留在RAM中。
模拟器的文件系统不映射到硬盘上的目录。 模拟器的磁盘映像存储为映像文件,您可以通过Eclipse(在工具栏中查找G1外观图标)或通过仿真器二进制文件本身进行pipe理(有关选项的说明,请运行“emulator -help”) 。
您最好使用命令行中的adb插入正在运行的模拟器。 如果你可以得到特定的目录和文件名,你可以做一个“adb pull”来把数据库文件从仿真器中取出,放到常规的硬盘上。
编辑 :删除build议,这也适用于无根据的设备 – 它只适用于模拟器,并在您操作adb作为根的设备。
请参阅此链接或按照下面的答案。
以下评论中提到的更新:
您不必再从DDMS的angular度来看,只需从Eclipse 窗口中打开文件浏览器>显示视图>其他…似乎应用程序不需要运行,甚至可以浏览不同的应用程序文件内容。 我正在运行ADB版本1.0.29
或者,你可以尝试旧的方法:
在Eclipse IDE上打开DDMS透视图
( Window> Open Perspective> Other> DDMS )
最重要的是:
您的应用程序必须运行,因此您可以查看文件夹和文件的级别 。
然后在“ 文件资源pipe理器”选项卡中 ,按照以下path:
data> data> your-package-name> databases> your-database-file 。
然后select文件,单击屏幕右下angular的光盘图标以下载.db文件。 如果要将数据库文件上载到仿真器,可以单击电话图标(在磁盘图标旁边),然后select要上载的文件。
如果你想看到.db文件的内容,我build议你使用SQLite数据库浏览器,你可以在这里下载。
PS:如果你想从真实的设备上看到数据库,你必须根据你的手机。
其他答案严重过时。 使用Android Studio ,您可以这样做:
- 点击“ Toos”>“Android”>“Android设备Monidtor”
- 点击文件资源pipe理器
- 导航到你的数据库文件,然后点击保存button。
我写了一个简单的bash脚本,将数据库从android设备拖到您的计算机(Linux,Mac用户)
文件名: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
数据库作为SQLite文件存储在/ data / data / PACKAGE / databases / DATABASEFILE中:
- PACKAGE是AndroidManifest.xml中声明的包(标签“manifest”,属性“包”)
- DATABASEFILE是在您调用SQLiteOpenHelper构造函数时传递的名称,如下所述: http : //developer.android.com/guide/topics/data/data-storage.html#db
您可以在文件资源pipe理器选项卡中看到(从/到/从文件系统复制)模拟器中的数据库文件,selectDDMS透视图 。
由于该问题不限于Android Studio,所以我正在为Visual Studio 2015(为Xamarin工作)提供path。
特别感谢这个问题的其他回答者。
简单的解决scheme – 适用于仿真器和连接设备
1查看当前可用的设备/仿真器列表。
$ adb devices
连接的设备列表
G7NZCJ015313309器件仿真器-5554器件
9885b6454e46383744设备
2在设备/仿真器上运行备份
$ adb -s emulator-5554 backup -f ~/Desktop/data.ab -noapk com.your_app_package.app;
3提取data.ab
$ dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -;
您将在/db
文件夹中find数据库
- Android:保持后台服务(防止进程死亡)
- 用于应用程序用户教程的showCase库的替代方法?
- 如何使Android的aapt和adb在没有ia32-libs的64位Ubuntu上工作(适用于版本12,13和14)
- 与依赖'com.android.support:support-annotations'冲突。 应用程序(23.1.0)和testing应用程序(23.0.1)的已解决版本不同
- Android中BaseColumns的用法是什么?
- 数据加载后如何防止滚动浏览到webview?
- 使用Android Volley发出HTTPS请求
- 如何禁用从/到EditText复制/粘贴
- 我可以在android布局中加下划线吗?