Android模拟器在哪里存储SQLite数据库?

时间:2009-10-02 17:20:32

标签: android sqlite

我正在开发一个将数据存储在SQLite数据库中的Android应用程序。我的问题是,当你使用模拟器时,这个数据库文件在哪里存储在文件系统上?

我已经看到它存储在

/data/data/package_name/databases

但我需要知道实际映射到本地计算机硬盘的位置。即使在关闭机器之后,数据库仍会在模拟器的多次运行中持续存在,因此它不能只驻留在RAM中......

10 个答案:

答案 0 :(得分:121)

以下评论中提到的更新

  

您不再需要处于DDMS视角,只需从Eclipse Window>打开文件资源管理器即可。显示视图>其他... 似乎应用程序不需要运行,我可以浏览不同的应用程序文件内容。我   运行ADB版本1.0.29


或者,您可以尝试旧方法:

在Eclipse IDE上打开DDMS透视图

Window> Open Perspective> Other> DDMS

而且最重要的是:

您的申请必须正在运行,因此您可以看到文件夹和文件的层次结构

然后在文件资源管理器标签中,您将按照以下路径进行操作:

数据>数据>你的包名>数据库>你的数据库文件即可。

然后选择文件,单击屏幕右上角的磁盘图标以下载 .db 文件。如果要将数据库文件上传到模拟器,可以单击电话图标(在磁盘图标旁边),然后选择要上载的文件。

如果您想查看 .db 文件的内容,我建议您使用SQLite数据库浏览器,您可以下载here

PS:如果您想从真实设备上查看数据库,则必须将手机设为root。

答案 1 :(得分:55)

模拟器的文件系统未映射到硬盘驱动器上的目录。模拟器的磁盘映像存储为映像文件,您可以通过Eclipse(在工具栏中查找G1外观图标)或通过模拟器二进制文件本身进行管理(运行“emulator -help”以获取选项说明)

您最好从命令行使用adb来插入正在运行的模拟器。如果您可以获取特定目录和文件名,则可以执行“adb pull”以将数据库文件从仿真器中移除到常规硬盘驱动器上。

修改:删除了对无根设备也适用的建议 - 它仅适用于仿真器和以root身份运行adb的设备。

答案 2 :(得分:17)

其他答案严重过时。使用 Android Studio ,这是实现此目的的方法:

  1. 点击工具> Android> Android设备监视器
  2. enter image description here

    1. 点击文件资源管理器
    2. enter image description here

      1. 导航到您的db文件,然后单击保存按钮。
      2. enter image description here

答案 3 :(得分:6)

我写了一个简单的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

答案 4 :(得分:5)

由于问题不仅限于Android Studio,因此我给出了Visual Studio 2015的路径(为Xamarin工作)。

Tools-Android-Android Device Monitor

enter image description here

  • 找到上图中提到的数据库文件,然后单击图2中所示的“拉”按钮。
  • 将文件保存在所需位置。
  • 您可以使用SQLite Studio或DB Browser for SQLite打开该文件。

特别感谢这个问题的其他回答者。

答案 5 :(得分:4)

数据库存储为 / data / data / PACKAGE / databases / DATABASEFILE 中的SQLite文件,其中:

您可以在文件资源管理器选项卡中选择 DDMS透视图,在模拟器中查看(从/向文件系统复制)数据库文件。

答案 6 :(得分:3)

简单解决方案 - 适用于仿真器和放大器。连接设备

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文件夹

中找到该数据库

答案 7 :(得分:2)

在Android Studio 3.4.1中,您可以使用Android Studio的搜索功能找到“设备文件资源管理器”,然后转到模拟器的/ data / data / package_name / database目录。

答案 8 :(得分:1)

根据Android docs,Monitor已在Android Studio 3.1中弃用,并已从Android Studio 3.2中删除。要访问文件,Android Studio在开发窗口的右下角有一个名为“设备文件资源管理器”的标签,您可以访问模拟器文件系统。只需

/ data / data / package_name / databases

祝你好运。

Android device File explorer

答案 9 :(得分:0)

对于Android Studio 3.5,请按照此处的说明进行操作:https://developer.android.com/studio/debug/device-file-explorer (查看->工具窗口->设备文件资源管理器->->数据库