На устройстве Android без рутирования я могу перейти к папке данных, содержащей базу данных, с помощью run-as
команды с моим именем пакета. Большинство типов файлов меня устраивает просто просмотр, но с базой данных я хотел бы получить их с устройства Android.
Есть ли команда download
copy
или move
из этой части оболочки adb? Я хочу загрузить файл базы данных и просмотреть его содержимое с помощью браузера базы данных.
Один из ответов здесь включает в себя превращение всего пакета приложения в сжатый архив, но нет дальнейшего ответа о том, как извлечь этот архив после того, как это будет сделано и перемещено на машину, что оставляет меня очень отвлеченным, когда может быть более прямое решение для начала
Ответы:
По дизайну
user
сборка Android (это то, что у вас есть на вашем телефоне, пока вы не разблокируете загрузчик и не прошейте телефон с помощьюuserdebug
илиeng
программного обеспечения) ограничивает доступ к внутреннему хранилищу - каждое приложение может получить доступ только к своим собственным файлам. К счастью для разработчиков программного обеспечения , не желающие искоренить свои телефоны Google предоставляет возможность доступа к внутренней системе хранения в отладочной версии своих пакетов с помощьюrun-as
команды.Чтобы загрузить
/data/data/debuggable.app.package.name/databases/file
с устройства Android 5.1+, выполните следующую команду:Чтобы загрузить сразу несколько файлов в папку,
/data/data/debuggable.app.package.name/
используйтеtar
:источник
run-as
чтобы скопировать файл в место на внешнем хранилище и вытащить оттуда файл базы данных, вместо того, чтобы возиться с разрешениями файла.Принятый ответ больше не работает у меня (заблокирован Android?)
Вместо этого я сделал следующее:
источник
su
чтобыrun-as
команда заработала .Если кто-то хочет получить базу данных из отладочного приложения, может использовать следующую процедуру:
источник
Я опубликовал простой сценарий оболочки для сброса баз данных:
Он выполняет два различных метода, описанных здесь:
\r
символов, выводимых некоторыми устройствами в оболочку.Отсюда вы можете использовать различные приложения SQLite с CLI или GUI, такие как
sqlite3
илиsqlitebrowser
, для просмотра содержимого базы данных.источник
Я не мог заставить работать что-то еще, кроме этого:
Первый выход - выход из run-as, второй выход - выход из оболочки adb для выполнения вытягивания.
источник
Для отладочной версии приложения очень удобно использовать команду
adb exec-out run-as xxx.yyy.zzz cat somefile > somefile
для извлечения одного файла. Но вам нужно сделать несколько раз для нескольких файлов. Вот простой скрипт, который я использую для извлечения каталога.Надеюсь, это будет полезно. Этот сценарий также доступен по адресу gist .
Типичное использование
затем он извлечет все файлы из каталога баз данных ваших приложений, то есть
/data/data/com.example.myapplication/databases
в текущий каталог.источник
Намного более простой подход для загрузки файла на локальный компьютер:
В оболочке вашего ПК запустите:
источник
Вы можете использовать этот скрипт для получения базы данных Realm.
источник
Если кто-то ищет другой ответ, который можно использовать для получения,
Database
аShared Preferences
затем выполните следующий шаг:В вашем
build.gradle
файле вашего приложения добавьте строкуТеперь, когда вы запускаете приложение в
non-release
режиме, ваше приложение автоматически откроет порт 8080 с вашего устройства,IP address
убедитесь, что ваше устройство подключено черезwifi
и выlaptop
используете ту же сеть. Теперь просто посетите URL-адресдля просмотра всех данных базы данных вместе с общими предпочтениями.
источник
Вот решение, которое работает на устройстве под управлением Android 5.1. Следующий пример предназначен для Windows.
Вам нужен sed (или sed.exe в Windows, например, из cygwin.) (В Unix он просто будет там;)). Чтобы удалить плохие символы '\ r', по крайней мере, в Windows.
Теперь просто запустите следующую команду:
Команда sed удаляет завершающие символы / r.
Конечно, вы должны заменить com.yourcompany.yourapp на имя пакета приложения, а «YourDatabaseName» - на имя базы данных в приложении.
источник
Файл базы данных пуст при использовании
adb run-as
. Это можно решить, вызвав close () для экземпляра RoomDatabase. Вызовите close (), чтобы позволить SQLite записать свой журнал на диск. Я создал эту кнопку, которая закрывает соединение с базой данных по запросу:через GIPHY
Вот как вызвать close для экземпляра RoomDatabase.
источник