Как вытащить базу данных из приложения андроид
Я посмотрел везде и я не могу найти реальный точный ответ или учебник о том, как, если это возможно, чтобы сделать это.
можно ли каким-либо образом вытащить базу данных устройства Android без необходимости ее укоренять? мне просто нужно извлечь эти данные в любом случае, чтобы собрать его на моем компьютере, так как я могу это сделать? мне нужно перепрограммировать приложение или любой другой метод, о котором вы, ребята, знаете, но помните, не укореняя устройство. спасибо
распространенный способ достичь желаемого-использовать команду ADB pull.
другой способ, который я предпочитаю в большинстве случаев, это скопировать базу данных по коду на SD-карту:
Не забудьте установить разрешение на запись на SD в манифесте, как показано ниже.
если ваше устройство работает под управлением Android v4 или выше, вы можете вытащить данные приложения, включая его базу данных,без root с помощью adb backup команда, затем извлеките файл резервной копии и получите доступ к базе данных sqlite.
первое резервное копирование данных приложения на ваш компьютер через USB-кабель с помощью следующей команды, заменить app.package.name с фактическим именем пакета приложения.
это предложит вам "разблокировать устройство и подтвердить операцию резервного копирования". не предоставляйте пароль для резервного шифрования, так что вы можете извлечь его позже. Нажмите на кнопку "резервное копирование данных" на вашем устройстве. На экране будет отображаться имя пакета, который вы создаете резервную копию, а затем закрыть сам по себе после успешного завершения.
в результате data.ab файл в вашей домашней папке содержит данные приложения в формате резервного копирования android. Для его извлечения используйте следующую команду:
если вышеописанное закончилось openssl:Error: 'zlib' is an invalid command. ошибки, попробуйте ниже.
в результате получается apps/app.package.name/ папка, содержащая данные приложения, включая базу данных sqlite.
для более подробной информации вы можете проверить оригинальный пост в блоге.
на отлаживаемого приложения 1 on некорневых устройств, вы можете использовать следующую команду:
пример:
установите путь adb для переменных окружающей среды или используйте команду cd для Android sdk folder platform-tools.
пример:
затем используйте команду
1 обратите внимание, что большинство приложений в Play store являются не отладочный так как это требует задание отладочном флаг в манифесте.
несмотря на то, что Отладка USB включена на устройстве.
мы можем обойти проблему по архаичному маршруту
но это громоздко для более чем одного файла.
как я могу вытащить каталог / data / data / com.корп.appName / файлы для моего MacBook?
делать это или сразу или через переход внутри '/storage / sdcard0 / myDir (откуда я могу продолжить передачу файлов Android) в порядке.
Дополнительного Комментария
может быть, это просто работает
будет генерировать файлы, которые я ищу. В этом случае я ищу способ распаковать/распаковать полученную резервную копию!
ADB backup напишет специфичный для Android архив:
этот архив можно преобразовать в формат tar, используя:
Поиск "Update" по этой ссылке.
можно использовать Android backup extractor для извлечения файлов из резервной копии Android ( .ab файл).
у меня была та же проблема, но я решил ее следующим образом:
после этого вы можете запустить
вот что сработало для меня:
я печатаю базу данных непосредственно в локальный файл.
на MacOSX, объединив ответы от Калафа и Олли Форда, следующее сработало для меня.
в командной строке (убедитесь, что adb находится на вашем пути, мой был в
/Library / Android / sdk / platform-tools / adb) и с вашим android-устройством, подключенным и в режиме отладки USB, запустите:
ваш android устройство попросит у вас разрешения на резервное копирование данных. Выберите "резервное копирование моих данных"
подождите несколько секунд.
резервная копия файла появится в каталоге, где вы запустили adb.
Теперь у вас будет резервная копия.файл tar вы можете распаковать следующим образом:
и видим все файлы, хранящиеся в вашем приложении.
вы можете использовать этот скрипт ниже. Он также может извлекать файлы из кэша приложений, а не как :
тогда вы можете использовать его следующим образом:
этот ответ основан на моем опыте с другими ответами, и комментариями в ответах. Я надеюсь, что смогу помочь кому-то в подобной ситуации.
Я делаю это на OSX через терминал.
ранее Винисиус ответ Avellar работал большой для меня. Я только когда-либо большую часть времени нуждался в базе данных с устройства из приложения отладки.
сегодня у меня был прецедент, когда мне нужно было несколько частных файлы. В итоге я нашел два решения, которые хорошо сработали для этого дела.
вот мой скрипт для извлечения нескольких личных файлов, которыми я поделюсь с вами, читателем, который также исследуя этот удивительный вопрос ;) :
вернуться к методу 1, расшифровки резервной копии с помощью Android Backup Extractor
вот шаги, которые я сделал на своем Mac, и проблемы, с которыми я столкнулся:
сначала я поставил резервную копию ( и установить пароль для шифрования резервной копии, мое устройство требует ):
затем я побежал:
наконец я просто убежал ( после запуска предыдущей команды снова )
теперь важно отметить, что если вы можете просто запустить-как и кошка, это намного быстрее. Во-первых, вы получаете только нужные файлы, а не все приложение. Два, больше файлов (+шифрование для меня)делает его медленнее для передачи. Поэтому знание этого способа важно, если у вас нет run-as на OSX, но сценарий должен быть первым goto для приложения отладки.
имейте в виду, я только что написал его сегодня и протестировал его несколько раз, поэтому, пожалуйста, сообщите мне о любых ошибках!
если вы используете компьютер Mac и телефон Samsung, это то, что вам нужно сделать (так как run-as не работает на Samsung и zlib не работает на Mac)
сделайте резервную копию каталога данных вашего приложения adb backup -f /Users/username/Desktop/data.ab com.example
вам будет предложено ввести пароль для шифрования в телефоне, не вводить любой. Просто нажмите "резервное копирование данных". См.как взять Резервного копирования?
после успешного резервного копирования, вы увидите data.ab файл на рабочем столе. Теперь нам нужно преобразовать это .
использовать Android Backup Extractor для этого. скачать | код
загрузите его, и вы увидите . Добавьте это в переменную PATH.
выполните это, чтобы сгенерировать деготь: java -jar abe.jar unpack /Users/username/Desktop/data.ab /Users/username/Desktop/data.tar
извлечь данные.тар!--31-- > файл для доступа ко всем файлам
после установки правильных разрешений, добавив следующий код:
adb pull работает как нужно.
начальная форма Dave Thomas script я смог написать собственное решение для преодоления 2 проблем:
- моя резервная копия содержала только файл манифеста
- двоичные файлы получили с Дэйвом Томасом, где нечитаемые
Это мой скрипт, который копирует данные приложения на sdcard, а затем вытаскивает его
аналогично ответ Тамаса, вот один лайнер для Mac OS X, чтобы получить все файлы для приложения с your.app.id С вашего устройства и сохраните их (в этом случае)
- исключить -d вытащить из эмулятора
- не топает ваши переменные сеанса
- вы можете вставить весь блок в терминал.app (или удалить новые строки, если это необходимо)
новые версии Android Studio включают в себя Проводник Файлов Устройств который я нашел удобным GUI-методом загрузки файлов из моей разработки Nexus 7.
вы должны убедиться, что вы включили отладку USB на устройстве
- щелкните вид > окна инструментов > проводник устройств или нажмите кнопку проводник устройств в строке окна инструментов, чтобы открыть Проводник устройств.
- выберите устройство из выпадающего список.
взаимодействие с содержимым устройства в окне проводника файлов. Щелкните правой кнопкой мыши файл или каталог, чтобы создать новый файл или каталог, сохранить выбранный файл или каталог на компьютере, загрузить, удалить или синхронизировать. Дважды щелкните файл, чтобы открыть его в Android Studio.
Android Studio сохраняет файлы, которые вы открываете таким образом во временном каталоге за пределами вашего проекта. При внесении изменений в файл, открытый с помощью проводника устройств, и чтобы сохранить изменения обратно на устройство, необходимо вручную загрузить измененную версию файла на устройство.
резервное копирование данных игры с apk. Нуга Oneplus 2.
означает ли это, что можно chmod каталог из world:-x в world:r-x достаточно долго, чтобы иметь возможность получать файлы?
Да, точно. Как ни странно, вам также понадобится файл x набор бит. (по крайней мере на Android 2.3)
chmod 755 весь путь вниз работал, чтобы скопировать файл (но вы должны вернуть разрешения после этого, если вы планируете продолжать использовать устройство).
Как вытащить базу данных sqlite из устройства Android, такого как эмулятор?
ОТВЕТЫ
Ответ 1
Вы можете использовать эти команды для вытаскивания базы данных с вашего устройства. Написание этих команд через студию Android очень просто. Убедитесь, что вы установили путь к adb глобально в вашу систему. Затем откройте "терминал" снизу до студии Android и рядом с "Android Monitor". Теперь вы просто обновляете следующие команды с фактическим именем пакета вашего приложения и именем файла базы данных. Вы получите файл с устройства.
команда для Android 5.0+/data/data/package.name/databases/file будет:
Ответ 2
- подключите устройство к компьютеру
- откройте командную строку в /sdk-directory/tools
- type adb pull /data/data/com.example.app/databases/database.db
где com.example.app - ваше имя пакета приложения, а database.db - файл базы данных
что в случае, если ваше устройство укоренилось, если не попробовать следовать
Ответ 3
Его единственный файл активности java, просто добавьте java файл в исходную папку, вы можете просматривать таблицы в базе данных приложений, обновлять, удалять, вставлять строки в таблицу. Все, что из вашего приложения.
Когда разработка завершена, удалите java файл из вашей папки src.
Это очень помогло мне. Надеюсь, это тоже поможет.
Ответ 4
Ответ 5
Я знаю, что это старый вопрос, однако это то, что я сделал, чтобы вытащить файл базы данных SQLite из приложения на устройство.
- Сохранение файла из пакета приложения на устройство sdcard
adb -d shell "run-as com.dautechnology.abdimuna.smartparking cat /data/data/<myAppPackageName>/databases/<databaseFileName> > /sdcard/<databaseFileName>"
Вышеприведенная команда сохранит файл на /sdcard Вы можете проверить файл на adb shell ls sdcard/ Затем выйдите из оболочки adb, набрав exit
- Вытащите файл из SD карты в текущее рабочее место.
adb pull sdcard/<databaseFileName> 3. Переместите файл на Рабочий стол или место вашего желания.
Я надеюсь, что это поможет кому-то там.
Ответ 6
Я искал всюду, и я не могу найти реального точного ответа или учебника о том, как это сделать, если это возможно.
Можно ли каким-либо образом вытащить базу данных на Android-устройство без необходимости ее запускать? Мне просто нужно извлечь эти данные каким-либо образом, чтобы собрать их на моем компьютере, так как я могу это сделать? мне нужно перепрограммировать приложение или какой-либо метод, о котором вы, ребята, знаете, но помните, не укореняя устройство. спасибо
ОТВЕТЫ
Ответ 1
Общим способом достижения желаемого является использование команды вытягивания ADB.
В большинстве случаев я предпочитаю копировать базу данных по коду на SD-карту:
Не забудьте установить разрешение на запись в SD в вашем манифесте, как показано ниже.
Ответ 2
Если ваше устройство работает под управлением Android v4 или выше, вы можете вытащить данные приложения, включая базу данных, без, используя команду adb backup , затем извлечь файл резервной копии и получить доступ к базе данных sqlite.
Первой резервной копии данных приложения на ПК через USB-кабель с помощью следующей команды, замените app.package.name на фактическое имя пакета приложения.
Результирующий файл data.ab в вашей домашней папке содержит данные приложения в формате резервного копирования android. Чтобы извлечь его, используйте следующую команду:
Если выше закончилось с ошибкой openssl:Error: 'zlib' is an invalid command. , попробуйте ниже.
Результатом является папка apps/app.package.name/ , содержащая данные приложения, включая базу данных sqlite.
Ответ 3
Для отлаживаемых приложений 1 в ненагруженных устройствах, вы можете использовать следующую команду:
Установите PATH adb для Enviroment Variables или используйте команду cd для платформы платформы Android sdk.
то используйте команду
1 Обратите внимание, что большинство приложений в магазине Play не отлаживаются, поскольку для этого требуется установка debuggable флаг в манифесте.
Ответ 4
Все, что вам нужно заполнить в приведенной выше команде, - это имя пакета вашего приложения, то, что вызывается в базе данных, и, возможно, что/где вы хотите скопировать базу данных.
<суб > Обратите внимание, что эта специальная команда будет работать только в том случае, если к компьютеру подключено только одно устройство. Параметр -d означает, что будет использоваться только подключенное устройство. Но есть и другие параметры, которые вы можете использовать вместо этого:
- -e будет нацелен на единственный запущенный эмулятор
- -s <serialnumber> будет нацелен на устройство с определенным серийным номером. Суб >
Ответ 5
Используя версию Android Studio 3.0 или более поздней версии, вы можете вытащить базу данных (также разделяемую привилегию, каталог кеша и другие), если приложение работает в режиме отладки на ненагруженном устройстве.
Чтобы загрузить базу данных с помощью студии Android, выполните следующие действия.
- Нажмите Показать > Инструмент Windows > Проводник > .
- Разверните узлы /data/data/[package-name].
Ответ 6
Для Ubuntu (не только?):
см. Ответ Sergeis, но вместо openssl используйте zlib-flate:
cat appbackup.ab | (dd bs = 24 count = 0 skip = 1; cat) | Zlib-Flate -uncompress > appbackup.tar
В противном случае openssl, вероятно, бросит:
openssl: Ошибка: "zlib" является недопустимой командой.
потому что openssl не скомпилирован с поддержкой zlib в Ubuntu
Ответ 7
Ответ 8
Ответ 9
вы можете легко извлечь файл sqlite с вашего устройства (корень не нужен)
- Перейдите в папку SDK
- cd platform-tools
cd/sdk/платформы-инструменты . /adb shell
Затем введите следующую команду в терминале
./adb -d shell "run-as com.your_packagename cat/data/data/com.your_packagename/databases/jokhanaNepal > /sdcard/jokhana.sqlite"
Например,
. /adb -d shell "run-as com.yuvii.app cat/data/data/com.yuvii.app/databases/jokhanaNepal > /sdcard/jokhana.sqlite"
Ответ 10
В качестве альтернативы вы можете использовать мою библиотеку Ultra Debugger. Это позволяет загружать базу данных в виде файла или редактировать значения непосредственно в браузере. Нет необходимости в корне, очень проста в использовании.
Ответ 11
На Mac (не требуется root)
Он скопирует файл sqlite в папку инструментов платформы.
Ответ 12
да, если ваше приложение для Android создает копию файла базы данных, доступную для всех.
android защищает приватные данные приложений, поэтому он не отображается и не доступен другим приложениям. база данных - это частные данные. ваше приложение может, конечно, прочитать файл базы данных, чтобы он мог копировать файл в какой-либо общедоступный видимый файл.
Ответ 13
На корневом устройстве вы можете:
Ответ 14
Основываясь на ответе, данном Lam Vinh, вот простой командный файл, который работает для меня в моем первом гене Nexus 7. Он предлагает пользователю ввести имя пакета и имя базы данных (без расширения .sqlite) и помещает его в c:\temp. Предполагается, что у вас установлен Android sdk в переменных среды.
Ответ 15
Если вы находитесь на Android 4.0 или выше, а вы на Mac, то вот рубин script, который сохранит ваше содержимое приложения на рабочем столе. Я бы предположил, что это также будет работать в Ubuntu, хотя я не тестировал его.
Этот script только "счастливый путь", поэтому убедитесь, что ваше устройство подключено и что adb добавлен в ваш профиль.
Ответ 16
Если вы пытаетесь сделать это на android 6, запросите разрешение и используйте код ответа на этот вопрос
Как только он будет предоставлен
Ответ 17
Вот решение с фотографиями о том, как вы можете получить доступ к неуправляемой файловой системе телефона Android android ssh от ubuntu 16.04
Ответ 18
Я даю полное решение "сохранить" и "восстановить" базу данных приложения в/из внутреннего хранилища (а не на ПК с adb).
Я сделал два метода: один для сохранения и другой для восстановления базы данных. Используйте эти методы в конце onCreate() в MainActivity (тот или другой, если вы хотите сохранить или восстановить базу данных).
сохранить базу данных во внутреннюю память:
восстановить базу данных из внутреннего хранилища:
Ответ 19
Если вы хотите, чтобы ваш файл базы данных
См. DDMS > Просмотр файла
найдите свой db файл из вашего имени пакета
затем щелкните по извлечению файла с устройства (только укорененное устройство)
Читайте также: