Повторюсь из другого ответа :
Начиная с уровня API 8 (Android 2.2), если вы создаете приложение как отлаживаемое, вы можете использовать команду оболочки run-as
для запуска команды или исполняемого файла в качестве конкретного пользователя / приложения или просто переключиться на UID
свое приложение, чтобы вы могли получить доступ к его данным. каталог.
Поэтому, если вы хотите получить базу данных приложения с устройства, вам следует запустить отладочную сборку приложения, подключиться adb shell
и выполнить следующую команду:
run-as com.yourpackage sh -c "cat ~/databases/db-file" > /sdcard/db-file.sqlite
Это скопирует ваш файл db-file
в корень SD-карты / внешнего хранилища. Теперь вы можете легко получить это оттуда, используя файловый менеджер adb pull
или что-то еще, что вам нравится. Обратите внимание, что при таком подходе вашему приложению НЕ нужно иметь WRITE_EXTERNAL_STORAGE
разрешение, так как копирование выполняется пользователем оболочки, который всегда может писать во внешнее хранилище.
В системах Linux / Mac есть возможность скопировать базу данных прямо на ваш компьютер с помощью следующей команды, которую можно использовать без входа в оболочку adb:
adb shell 'run-as com.yourpackage sh -c "cat ~/databases/db-file"' > db-file.sqlite
Однако это не будет работать правильно в Windows из-за преобразования символов CR / LF. Используйте там первый метод.
SQLite format 3
строки. Также убедитесь, что у вас правильнаяsqlite
версия (т.е. вы не пытаетесь открыть базу данных sqlite3 с помощью исполняемого файла sqlite2). И вы также можете попробовать другие клиенты SQLite (например, SQLiteStudio ). Надеюсь, поможет.permission denied
Я использую этот сценарий оболочки на своем MAC, который копирует базу данных прямо в мою домашнюю папку. Простое решение в один клик, просто измените имя пакета (com.example.app) и имя базы данных (database.sqlite)
Простой сценарий
Скрипт, принимающий аргументы [package_name] [database]
источник
Лучший способ просматривать и управлять вашей базой данных приложения Android - использовать эту библиотеку https://github.com/sanathp/DatabaseManager_For_Android
С помощью этой библиотеки вы можете управлять базой данных SQLite своего приложения из самого приложения. вы можете просматривать таблицы в базе данных вашего приложения, обновлять, удалять, вставлять строки в свои таблицы. Все из вашего приложения.
Это единственный файл активности java, просто добавьте файл java в исходную папку. Когда разработка будет завершена, удалите файл java из папки src, которая и есть.
Мне это очень помогло. Надеюсь, это поможет и вам.
Вы можете просмотреть 1-минутную демонстрацию здесь: http://youtu.be/P5vpaGoBlBY
источник
Хотя это старый вопрос, я думаю, он все еще актуален и заслуживает ответа на текущий момент. Доступны инструменты, позволяющие проверять базы данных напрямую (без необходимости извлекать их из устройства или эмулятора).
Инструмент, который я обнаружил совсем недавно (и который мне больше всего нравится), - это Android Debug Database .
Вам нужно только добавить эту зависимость:
Дополнительный код не требуется. После запуска приложения откройте logcat и отфильтруйте "DebugDB", и вы увидите сообщение
Он работает с любым браузером, и вы можете просматривать таблицы базы данных и общие настройки.
Он также работает с эмуляторами по умолчанию и с эмуляторами Genymotion.
Раньше я использовал стето .
Оборотная сторона: вам нужно добавить немного кода, и вы привязаны к браузеру Chrome.
Преимущество: у вас есть возможность также проверять сетевой трафик.
источник
В своем приложении я экспортирую базу данных на SD-карту. Когда база данных находится на SD-карте, к ней можно получить доступ, подключив устройство к компьютеру.
Посмотрите этот пост: Создание резервной копии базы данных на SDCard на Android
источник
Если вы получите
пытаться
Обратите внимание на двойные кавычки!
источник
Я просто сделал:
Затем я могу отлаживать базу данных sqlite или все, что хочу, из оболочки с соответствующими разрешениями.
источник
Если apk является отлаживаемым, есть способ использовать программу с именем run-as из оболочки adb (без полномочий root) для копирования частного файла приложения.
источник
Вот пошаговые инструкции, в основном взятые из комбинации других ответов. Это работает с устройствами, которые не разблокированы.
Подключите ваше устройство и запустите приложение в режиме отладки.
Скопируйте файл базы данных из папки приложения на SD-карту: выполните:
./adb -d shell 'run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite> /sdcard/filename.sqlite'
Вытащите файлы базы данных на свой компьютер: выполните:
./adb pull / sdcard / выполнить: ./adb
Установите Firefox SQLLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
Откройте Firefox SQLLite Manager и откройте файл базы данных из шага 3 выше.
Наслаждайтесь!
источник
Android Studio 4.1 Добавлена новая функция для просмотра / редактирования баз данных Android SQLite.
Как открыть инспектор базы данных
Чтобы открыть инспектор базы данных в Android Studio, вам нужно выбрать
View > Tool Windows > Database Inspector
в строке меню.Также вам необходимо запустить приложение на устройстве с API уровня 26 или выше.
Используя этот инструмент, вы можете
Запросить ваши базы данных
Изменить и отладить вашу базу данных
источник
В новой версии Android Studio 4.1 появился новый инспектор баз данных .
Вы можете выбрать следующие параметры в строке меню,
View > Tool Windows > Database Inspector
чтобы открыть ее. Более подробные инструкции можно найти в этом блоге .Другой способ - использовать для этого стето . Вы добавляете зависимость, а затем можете использовать Chrome DevTools (chrome: // inspect) для проверки базы данных при подключении устройства.
источник
Вам необходимо запустить adb с правами root или использовать его на рутированном телефоне.
Чтобы запустить adb как root, используйте
adb root
См. Также: Почему я получаю отказ в доступе к папке данных при использовании adb?
источник
Ни одно из
run-as
решений -and-cat-to-sdcard у меня не работало на Android 4.4.2. Я не уверен, но я подозреваю , что это может быть связано сrun-as
инструментом не правильно обработки новыхsdcard_r
иsdcard_rw
разрешений.Сначала мне пришлось скопировать файл базы данных
/files
в личное внутреннее хранилище моего приложения:Затем я скопировал
/sdcard/Android/data/com.example.myapp/files
в Javaland (для этого требуетсяWRITE_EXTERNAL_STORAGE
разрешение):Наконец, я скопировал файл на свой ноутбук:
источник
На моем устройстве не было SD-карты
поэтому первое решение у меня не сработало.Если у вас возникла аналогичная проблема, попробуйте следующее:
источник
/sdcard
не обязательно SD-карта. На моем телефоне он указывает на внутреннюю память, когда физической SD-карты нет.Попробуйте это приложение: SQLiteWeb ( https://play.google.com/store/apps/details?id=br.com.cm.sqliteweb ). Он обеспечивает удаленный доступ к вашей базе данных, не извлекая ее.
В платной версии он имеет root-доступ к частной базе данных (/ data / data / package-name ...) или реализует Content Provider для подключения с помощью SQLiteWeb (инструкции внутри приложения)
Но если вы хотите остаться с бесплатной версией, вы можете создать свою базу данных во внешнем хранилище:
источник
В OSX, используя ответ @Tadas с автоматом и sqllitebrowser ( https://github.com/sqlitebrowser/sqlitebrowser ):
откройте Automator и создайте новый рабочий процесс.
добавить действие «Запустить сценарий оболочки».
Вставьте это:
source ~ / .bash_profile adb shell 'run-as cat /data/data/your_app_uid/databases/db.name> /tmp/db.name' adb pull /tmp/db.name ~ / open -a sqlitebrowser ~ / db. название
нажмите «Выполнить», чтобы обновить базу данных в sqlitebrowser.
источник
cd <ANDROID_SDK_PATH>
(для меня в Windowscd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(это работает, только если запущен только один эмулятор)cd data/data
su
(получить привилегии суперпользователя)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
, иначе оператор не выдается и вместо этого переводится на новую строку).Примечание. Используйте
ls
(Linux) илиdir
(Windows), если вам нужно просмотреть содержимое каталога.источник