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

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

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

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

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

18 ответов


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

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

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

    • версии Android Studio :

      • открыть DDMS via Tools > Android > Android Device Monitor

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

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

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

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

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

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

      • открыть Проводник Файлов Устройств via View > Tool Windows > Device File Explorer

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

      • щелкните правой кнопкой мыши по базе данных и выберите Save As.... сохранить в любом месте вы хотите на вашем компьютере.

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

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

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

enter image description here

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


подключение к Sqlite3 через adb Shell

я не нашел способа сделать это в 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

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

$ 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 DB):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

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

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

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

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


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

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

/data/data/{package_name}/databases/

enter image description here


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

SQLScout

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


чтобы узнать, где хранится база данных 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/

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

загрузить браузер изhttp://sqlitebrowser.org/

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

спасибо,


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

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

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

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) сохраните скрипт!!

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

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

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 app. Инструмент открывает сокет сервера в приложении для связи через веб-браузер. Вы можете просматривать всю свою базу данных и загружать файл базы данных непосредственно через браузер.

enter image description here

интеграция может быть выполнена через jitpack.Ио:

построить.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+с корни устройства.
Дайте мне знать, если вы найдете, как заставить его работать без root.

Screenshot SqlitePrime

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


откройте Файл Устройства Explore Terminal в нижней части Android Studio.

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

Open the folder data

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

перейти к C:/your/Computer/Directory открыть ваш.databaseName С DB SQLite

enter image description here


Для Android Studio 3.X

  1. Вид - > Окна Инструментов - > Проводник Файлов Устройств
  2. в Проводнике файлов data - >data - >com.(пакет yourapplication) - > базы данных
  3. щелкните правой кнопкой мыши на базе данных и сохраните на локальном компьютере. Чтобы открыть файл, вы можете использовать SQLite Studio, просто перетащив файл базы данных на нем.

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


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

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

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

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

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

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

    Stetho.initializeWithDefaults (this);

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

    chrome:/ / проверить / #устройства

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

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


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

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

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