Подтвердить что ты не робот

Где Android-эмулятор хранит базу данных SQLite?

Я работаю над приложением Android, которое хранит данные в базе данных SQLite. Мой вопрос: где этот файл базы данных хранится в файловой системе при использовании эмулятора?

Я видел, что он хранится в

/data/data/package_name/databases

но мне нужно знать, где на моем локальном жестком диске компьютера, который на самом деле отображается. База данных сохраняется на нескольких запусках эмулятора, даже после того, как вы выключили аппарат, поэтому он не может просто находиться в ОЗУ...

4b9b3361

Ответ 1

Файловая система эмулятора не отображается в каталог на вашем жестком диске. Образ диска эмулятора хранится как файл изображения, с которым вы можете управлять через Eclipse (искать иконку G1 на панели инструментов) или через сам эмулятор эмулятора (запустите "эмулятор -help" для описания параметров).

Лучше всего использовать adb из командной строки для подключения к запущенному эмулятору. Если вы можете получить конкретный каталог и имя файла, вы можете сделать "adb pull", чтобы получить файл базы данных с эмулятора и на ваш обычный жесткий диск.

Изменить. Устранено предположение, что это работает и для нерасширенных устройств - оно работает только для эмуляторов и устройств, в которых вы работаете с adb как root.

Ответ 2

Обновление упоминается в комментариях ниже:

Вам больше не нужно быть в перспективе DDMS, просто откройте проводник из окна Eclipse > Показать представление> Прочее... Кажется, что приложение не нужно запускать даже, я могу просматривать в разных файлах приложений содержание. Я использую версию ADB 1.0.29


Или вы можете попробовать старый подход:

Откройте перспективу DDMS в вашей Eclipse IDE

(Окно> Открыть перспективу> Другое> DDMS)

и самое главное:

ВАША ЗАЯВКА ДОЛЖНА БЫТЬ РАБОТАЕТ, ЧТОБЫ ВЫ МОЖЕТЕ УВИДЕТЬ ИЕРАРХИЮ ПАПОВ И ФАЙЛОВ.

Затем на вкладке "Проводник" вы пройдете по пути:

данные> данные> имя вашего пакета> базы данных> файл вашей базы данных.

Затем выберите файл, щелкните значок дискеты в правом углу экрана, чтобы загрузить файл.db. Если вы хотите загрузить файл базы данных в эмулятор, вы можете нажать на значок телефона (рядом со значком дискеты) и выбрать файл для загрузки.

Если вы хотите увидеть содержимое файла.db, я советую вам использовать SQLite Database Browser, который вы можете скачать здесь.

PS: Если вы хотите увидеть базу данных с реального устройства, вы должны рутировать свой телефон.

Ответ 3

Другие ответы сильно устарели. С Android Studio, это способ сделать это:

  1. Нажмите на Инструменты> Android> Android Device Monitor

enter image description here

  1. Нажмите на Проводник

enter image description here

  1. Перейдите к файлу БД и нажмите кнопку " Сохранить".

enter image description here

Ответ 4

Я написал простой bash script, который вытаскивает базу данных с устройства Android на ваш компьютер (Linux, пользователи Mac)

имя_файла: android_db_move.sh use: 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

Ответ 5

Поскольку вопрос не ограничивается Android Studio, поэтому я даю путь для Visual Studio 2015 (работал для Xamarin).

Tools-Android-Android Device Monitor

enter image description here

  • Найдите файл базы данных, упомянутый на изображении выше, и нажмите кнопку Pull, как показано на рисунке 2.
  • Сохраните файл в нужном месте.
  • Вы можете открыть этот файл, используя SQLite Studio или DB Browser для SQLite.

Отдельное спасибо другим ответчикам по этому вопросу.

Ответ 6

Базы данных хранятся в виде файлов SQLite в /data/data/PACKAGE/databases/DATABASEFILE, где:

  • ПАКЕТ - это пакет, объявленный в AndroidManifest.xml(тег "manifest", атрибут "package" )
  • DATABASEFILE - это имя, переданное при вызове конструктора SQLiteOpenHelper, как описано здесь: http://developer.android.com/guide/topics/data/data-storage.html#db

Вы можете увидеть (скопировать из/в файловую систему) файл базы данных в эмуляторе, выбрав Перспектива DDMS на вкладке "Проводник".

Ответ 7

Простое решение - работает как для эмулятора, так и для подключенных устройств

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

Ответ 8

В Android Studio 3.4.1 вы можете использовать функцию поиска в Android Studio, чтобы найти "Обозреватель файлов устройств", а затем перейти в каталог /data/data/package_name/database вашего эмулятора. Yd2La.png