Где эмулятор Android хранит базу данных SQLite? - PullRequest
105 голосов
/ 02 октября 2009

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

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

/data/data/package_name/databases

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

Ответы [ 8 ]

121 голосов
/ 17 августа 2010

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

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


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

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

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

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

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

Затем на вкладке File Explorer вы будете следовать пути:

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

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

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

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

55 голосов
/ 02 октября 2009

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

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

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

18 голосов
/ 27 мая 2016

Остальные ответы сильно устарели. С Android Studio это можно сделать следующим образом:

  1. Нажмите Инструменты> Android> Монитор устройства Android

enter image description here

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

enter image description here

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

enter image description here

6 голосов
/ 09 апреля 2013

Я написал простой скрипт 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
5 голосов
/ 20 февраля 2017

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

Tools-Android-Android Device Monitor

enter image description here

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

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

4 голосов
/ 14 октября 2010

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

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

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

3 голосов
/ 23 мая 2017

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

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

.
0 голосов
/ 21 июня 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...