Просмотр содержимого файла базы данных в Android Studio


Я использую Android Studio для разработки моего приложения, так как это было выпущено.

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

для того чтобы сделать это, я должен открыть DDMS > File Explorer. Как только я открою DDMS, мне нужно снова подключить USB, и я потеряйте мой поток отладки. После проверки файла базы данных мне нужно закрыть DDMS и снова подключить USB, чтобы вернуться в режим отладки.

Это слишком сложно. У кого-нибудь есть лучший способ сделать это в Android Studio (я знаю, что это проще в Eclipse) ?

18 181

18 ответов:

просмотр баз данных из Android Studio:

Edit: для просмотра базы данных в эмуляторе выполните следующие действия (для фактического устройства прокрутите вниз):

  1. скачать и установить SQLiteBrowser.
  2. скопируйте базу данных с устройства на компьютер:

    • версии Android Studio :

      • открыть DDMS через Tools > Android > Android Device Monitor

      • нажмите на вашем устройстве слева.
        Вы должны увидеть свое приложение: enter image description here

      • на File Explorer (одна из вкладок справа), перейти к /data/data/databases enter image description here

      • выберите базу данных, просто нажав на оно.

      • перейдите в верхний правый угол окна монитора устройства Android. Нажмите на кнопку'вытащить файл устройства' : enter image description here

      • откроется окно с запросом, где вы хотите сохранить файл базы данных. сохранить везде, где вы хотите на вашем ПК.

    • версии Android Studio >= 3.0:

      • открыть Device File Explorer через View > Tool Windows > Device File Explorer

      • на data > data > PACKAGE_NAME > database, где имя_пакета - это имя вашего пакета (это com.Кино в примере выше)

      • Правой Кнопкой Мыши на базе данных и выберите Save As.... сохранить везде, где вы хотите на вашем ПК.

  3. открыть SQLiteBrowser установлен. Нажмите на 'открыть базу данных', перейдите к месту, где вы сохранили файл базы данных, и открыть. Теперь вы можете просмотреть содержимое своей базы данных.

для просмотра базы данных на мобильном устройстве:

на этой репозиторий Github и следуйте инструкциям в readme, чтобы иметь возможность просматривать базу данных на вашем устройстве. Что вы получаете что-то вроде это:

enter image description here

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

подключение к Sqlite3 через оболочку ADB

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

найти всю информацию здесь: http://developer.android.com/tools/help/adb.html#sqlite

1-Перейдите в папку platform-tools в командной строке

2 - Введите команду adb devices чтобы получить список ваших устройств

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx   device

3- Подключите оболочку к устройству:

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell

4 - перейдите в папку, содержащую файл db:

cd data/data/<your-package-name>/databases/

5-запустите sqlite3 для подключения к БД:

sqlite3 <your-db-name>.db

6-запуск команд sqlite3, которые вам нравятся, например:

Select * from table1 where ...;

Примечание: найти больше команд для запуска ниже.

SQLite cheatsheet

есть несколько шагов, чтобы увидеть таблицы в SQLite база данных:

  1. список таблиц в базе:

    .tables
    
  2. список, как выглядит таблица:

    .schema tablename
    
  3. распечатать всю таблицу:

    SELECT * FROM tablename;
    
  4. перечислите все доступные команды приглашения SQLite:

    .help
    

самый простой метод, когда не используется эмулятор

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/databse_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name

предостережения:

Я не проверял это в то время. Он может не работать на API>=25. Если команда CP не работает для вас попробовать один из следующих:

# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>

# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name

объяснение:

первый блок настраивает разрешения вашей базы данных для чтения. Это рычаги run-as что позволяет вам олицетворять пользователя вашего пакета, чтобы сделать изменение.

$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/databse_name
$ exit # Closes the shell started with run-as

затем мы копируем базу данных в мир читаемый / записываемый каталог. Это позволяет АБР тянуть доступ пользователя.

$ cp /data/data/your.package.name/databases/database_name /sdcard

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

$ run-as your.package.name
$ chmod 660 databases/database_name 
$ chmod 660 databases
$ exit # Exit the shell started with run-as

наконец, скопировать базу данных на локальный диск.

$ exit # Exits shell on the mobile device (from adb shell) 
$ adb pull /sdcard/database_name

Я на самом деле очень удивлен, что никто не дал это решение:

посмотри Stetho

Я использовал Stetho несколько раз для разных целей (одна из них-проверка базы данных). На самом деле сайт, они также говорят о функциях для проверки сети и просмотра иерархии представлений.

для этого требуется только небольшая настройка: 1 Добавление зависимостей gradle (которое вы можете прокомментировать производственные сборки), несколько строк кода для создания экземпляра Stetho и браузер Chrome (потому что он использует Chrome devtools для всего).

обновление: Теперь вы можете использовать Stetho для просмотра файлов Realm (если вы используете Realm вместо базы данных SQLite):https://github.com/uPhyca/stetho-realm

обновление #2: Теперь вы можете использовать Stetho для просмотра документов Couchbase: https://github.com/RobotPajamas/Stetho-Couchbase

обновление #3: Facebook сосредотачивает усилия на добавлении всех функций Stetho в свой новый инструмент Flipper. Flipper уже имеет многие из функций, которые имеет Стето. Итак, теперь может быть хорошее время, чтобы сделать выключатель. https://fbflipper.com/docs/stetho.html

наконец, я нашел самое простое решение, которое не нужно открывать DDMS.

на самом деле, решение основано на том, что @Distwo упомянул, но это не должно быть так сложно.

первый, помните путь к файлу базы данных в устройстве, он должен всегда то же самое. Например мой:/data/data/com.XXX.module/databases/com.XXX.module.database

второй, выполните эту команду, которая тянет файл базы данных на ваш ПК

 adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/

что вы нужно просто скопировать и сохранить эту команду, затем вы можете использовать ее снова и снова.

третий, если вам отказали в разрешении или что-то в этом роде, просто запустите adb root перед предыдущей команды.

In Android Studio 3 вы можете увидеть "Проводник Файлов Устройств" раздел в правой нижней части Android Studio.

откройте его, затем вы можете увидеть дерево файлов, Вы можете найти базы данных приложений по этому пути:

/data/data/{package_name}/databases/

enter image description here

попробуйте этот плагин для Android studio SQLScout. вы можете просматривать и редактировать базу данных приложения в реальном времени.

SQLScout

Edit: помните, что это платный плагин, но есть 24h пробная версия и подходит для головной боли времени.

чтобы узнать, где хранится база данных sqlite, созданная вами в android studio, вам нужно выполнить простые шаги:

1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your  database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.

для получения дополнительной информации эта ссылка будет полезна. http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-android-studio/

чтобы просмотреть данные, присутствующие в файле db, вам нужно загрузить браузер sqlite или добавить плагин того же самого в любом браузере, поэтому вам нужно открыть файл в браузере и просмотреть данные.

скачать браузер из http://sqlitebrowser.org/

вот скриншот, показывающий браузер, содержащий базу данных регистра

спасибо,

после прохождения всех решений я предложу

использовать Stethos
давайте посмотрим, как это просто

добавить следующие зависимости в build.gradle file

compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'

затем перейдите к методу mainActivity onCreate добавить следующую строку

Stetho.initializeWithDefaults(this);

это потребует от вас

import com.facebook.stetho.Stetho;

Теперь при запуске приложения из Android studio откройте Chrome и введите адресную строку
chrome: / / inspect/

на вкладке ресурсы >web SQL проверьте базу данных и таблицу играть с ним в режиме реального времени легко

Это может быть не тот ответ, который вы ищете, но у меня нет лучшего способа для загрузки БД с телефона. Я предлагаю убедиться, что вы используете этот мини-DDMS. Это будет супер скрытый, хотя, если вы не нажмете на очень маленькое поле camoflage в самом нижнем левом углу программы. (попытался навести на него курсор, иначе вы можете пропустить его.)

также выпадающее меню, которое говорит, что нет фильтров (вверху справа). Он буквально имеет массу различных способов, которыми вы можете контролировать различные процесс / приложения по PPID, имени и многое другое. Я всегда использовал это для мониторинга телефона, но имейте в виду, что я не делаю тип работы dev, который должен быть на 120% положительным, база данных не делает что-то необычное.

надеюсь, это поможет

enter image description here

Это очень старый вопрос и мой ответ похож на некоторые ответы выше, но делается гораздо быстрее. Приведенный ниже скрипт для Mac, но я уверен, что кто-то может изменить его для Windows.

1) откройте редактор сценариев на вашем Mac (вы можете просто найти редактор сценариев в Spotlight)
2) скопируйте и вставьте текст ниже и измените его с помощью пути SDK, имени пакета и т. д. (см. ниже)
3) сохраните скрипт!!

вот и все! Просто нажмите кнопку воспроизведения сверху, чтобы получить обновлен файл базы данных, который будет на вашем рабочем столе.

заменить следующие вещи в скрипте ниже:

path_to_my_sdk ==>> поместите полный путь к вашему sdk
my_package_name = = > > имя пакета вашего приложения
myDbName.db = = > > имя файла вашей базы данных

set getLocalDb to "path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases && path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases/myDbName.db && path_to_my_sdk/platform-tools/adb shell run-as my_package_name cp databases/myDbName.db /sdcard/myDbName.db && path_to_my_sdk/platform-tools/adb pull /sdcard/myDbName.db /Users/User/Desktop/myDbName.db"
do shell script getLocalDb

надеюсь, это кому-то поможет.

Я использую windows 7, мое устройство является эмулированным Android API устройства 23. Я полагаю, что это то же самое для любого реального устройства, пока оно укоренено, и API не выше 23

перейдите в меню сервис - > Android - > монитор устройств Android. Перейдите в Проводник файлов. В моем случае, это в data/data//app_webview/databases/file_0 / 1

Я должен вручную добавить .дБ в конце файла с именем "1"

я знаю, что вопрос довольно старый, но я считаю, что эта проблема все еще присутствует.

просмотр баз данных из Вашего браузера

я создал инструмент разработки, который вы можете интегрировать в качестве lib в проект вашего приложения для android. Инструмент открывает сокет сервера в вашем приложении для связи через веб-браузер. Вы можете просмотреть всю свою базу данных и загрузить файл базы данных непосредственно через браузер.

enter image description here

интеграция может быть выполнена с помощью jitpack.io:

построить.Gradle в:
//...
allprojects {
    repositories {
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}
//...

приложения build.Gradle в:

//...
dependencies {
    //...
    debugCompile 'com.github.sanidgmbh:debugghost:v1.1'
    //...
}
//...

Настройки Приложения класс

для компиляции DebugGhostLib только в определенных типах сборки или продуктах-вкусах нам нужен абстрактный класс приложения, который будет получен в специальных вкусах. Поместите следующий класс в свой main папка (под java>your.app.package):

public class AbstractDebugGhostExampleApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Do your general application stuff
    }
}

теперь, для вашего типа сборки выпуска (или вкуса продукта), вы добавляете следующий класс приложения в свой release (или продукт-вкус) папка (также под java>your.app.package):

public class MyApp extends AbstractDebugGhostExampleApplication {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}

это класс приложения, который будет не ссылка DebugGhostLib.

также расскажите своим AndroidManifest.xml что вы используете свой собственный класс приложения. Это будет сделано в вашем main папка:

<manifest package="demo.app.android.sanid.com.debugghostexample" xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- permissions go here -->
    <application android:name=".MyApp"> <!-- register your own application class -->
        <!-- your activities go here -->
    </application>
</manifest>

теперь, для вашего типа сборки отладки (или вкуса продукта), вы добавляете следующий класс приложения в свой debug (или продукт-вкус) папка (также под java>your.app.package):

public class MyApp extends AbstractDebugGhostExampleApplication {
    private DebugGhostBridge mDebugGhostBridge;

    @Override
    public void onCreate() {
        super.onCreate();

        mDebugGhostBridge = new DebugGhostBridge(this, MyDatabaseHelper.DATABASE_NAME, MyDatabaseHelper.DATABASE_VERSION);
        mDebugGhostBridge.startDebugGhost();
    }
}

вы можете узнать здесь.

мне пришлось тянуть базу данных с телефона на ПК. Теперь я использую это очень хорошо сделано и бесплатное приложение, которое имеет много особенностей. Он работает на API 4.1+с Rooted устройства.
Дайте мне знать, если вы найдете, как заставить его работать без корня.

Screenshot SqlitePrime

https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime

откройте Файл Устройства исследуйте терминал в нижней части Android Studio.

откройте папку с именем данные , затем внутри данных снова откройте папку данные .

Open the folder data

прокрутите список папок и найдите папку с your.package.name. открыть папку your.package.name>база данных. Вы получите ваш.имя_базы_данных. Право Нажмите ваш.имя_базы_данных и сохранить как C:/your/Computer/Directory.

перейти к C:/your/Computer/Directory открой ваш.имя_базы_данных С DB SQLite

enter image description here

Для Android Studio 3.X

  1. View - > Tool Windows - > Device File Explorer
  2. в Проводнике данных - >данные - > com.(yourapplication package) - > базы данных
  3. Правой Кнопкой Мыши на базе данных и сохранить на локальном компьютере. Для открытия файла можно использовать SQLite Студия, просто перетащив файл базы данных на нем.

вот ссылка на SQLite Studio : https://sqlitestudio.pl/index.rvt?act=download

самый простой способ-подключить устройство и запустить Android Studio Затем Из Панели Инструментов:

  1. Вид -- > Окно Инструментов -- > Проводник Файлов Устройства
  2. зайдите в data / data и найдите свой пакет
  3. найдите файл БД, который вы хотите изучить, и загрузите его
  4. Я рекомендую на этом онлайн-инструменте:https://sqliteonline.com/ чтобы изучить файл БД

другой способ-использование Стето библиотека:

  1. добавьте зависимость Stello в свою сборку.Gradle в:

    compile ' com.фейсбук.stetho:stetho:1.5.0'

  2. поместите следующую строку на ваш onCreate() вашего класса приложения или основной деятельности:

    Stetho.initializeWithDefaults (this);

  3. подключите устройство, запустите приложение и введите следующий сайт Хром:

    chrome: / / inspect / #devices

и это все. теперь вы можете изучить свои таблицы.

Примечание: рекомендуется удалить зависимость перед переходом к производству.

Я собрал Unix командной строки автоматизации этого процесса и положить код здесь:

https://github.com/elliptic1/Android-Sqlite3-Monitor

Это shell-скрипт, который принимает имя пакета и имя базы данных в качестве параметров, загружает файл базы данных от подключенного устройства Android, и запускает скрипт на загруженный файл. Затем, с помощью инструмента unix, такого как "watch", вы можете периодически открывать окно терминала обновление представления вывода сценария базы данных.