Я искал везде и не могу найти настоящего точного ответа или руководства о том, как, если это возможно, это сделать.
Можно ли каким-либо образом получить базу данных Android-устройства без рутирования? Мне просто нужно каким-либо образом извлечь эти данные, чтобы собрать их на моем компьютере, так как я могу это сделать? мне нужно перепрограммировать приложение или какой-либо другой метод, о котором вы, ребята, знаете, но помните, без рутирования устройства. Спасибо
Ответы:
Распространенный способ добиться желаемого - использовать команду ADB pull.
Другой способ, который я предпочитаю в большинстве случаев, - это скопировать базу данных по коду на SD-карту:
Не забудьте указать в манифесте разрешение на запись на SD, как показано ниже.
источник
getPath
метод , а не путь к базе данных .Если ваше устройство работает под управлением 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.Для получения дополнительной информации вы можете проверить исходное сообщение в блоге .
источник
openssl:Error: 'zlib' is an invalid command.
, на которое я ответилdd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
ОДНАКО после того, как оно показывает,17+0 records in17+0 records out17 bytes transferred in 0.000064 secs
что нет никаких доказательств того, что с папкой что-либо было сделано. Поскольку это всего 17 байт, я предполагаю, что эта команда также не удалась. Я думаю, это плохо, что я не могуadb pull
базу данных из отладочного приложения !!android:allowBackup="false"
openssl
на Mac OS X не поддерживаютzlib
команду либо, поэтому я переустановил один с варевом:brew reinstall openssl
. Это не заменит вашу систему openssl. Поэтому я изменил команду PATH только для текущего сеанса:export PATH=/usr/local/opt/openssl/bin:$PATH
после чего мог успешно выполнять команды из этого ответа.Для отлаживаемых приложений 1 на некорневых устройствах вы можете использовать следующую команду:
Пример:
Установите PATH adb для переменных среды или используйте команду cd для android sdk folder platform-tools.
Пример:
затем используйте команду выше
1 Обратите внимание, что большинство приложений в магазине Play не могут быть отлажены, так как для этого требуется установить флаг отладки в манифесте.
источник
package.name
на пакет приложения возвращается ошибка:run-as: Package 'com.my.app' is unknown
Большинство ответов здесь намного сложнее, чем должно быть. Если вы просто хотите скопировать базу данных своего приложения со своего телефона на компьютер, вам просто понадобится эта команда:
Все, что вам нужно заполнить в приведенной выше команде, - это имя пакета вашего приложения, название базы данных и, возможно, куда и куда вы хотите скопировать базу данных.
Обратите внимание, что эта конкретная команда будет работать только в том случае, если к вашему компьютеру подключено только одно устройство. В
-d
означает параметр , что только подключенное устройство будет адресоваться. Но есть и другие параметры, которые вы можете использовать вместо этого:-e
будет нацелен на единственный работающий эмулятор-s <serialnumber>
будет нацеливаться на устройство с определенным серийным номером.источник
adb -d shell "run-as your.package.name cat databases/database_name.db > /mnt/sdcard/database_name.db"
запуститеSSHDroid
FileZilla и подключитесь к телефону по протоколу SFTP. Установите / mnt / sdcard в качестве удаленного каталога по умолчанию.adb -d shell "run-as your.package.name ls databases"
) и 2) вы можете захотеть получить любые другие связанные файлы вместе с базой данных в в моем случае извлечение файлов -smh и -wal было единственным способом заставить браузер БД для SQLite открыть базу данных,Используя Android Studio 3.0 или более позднюю версию, можно получить базу данных (а также общие настройки, каталог кеша и другие), если приложение работает в режиме отладки на некорневом устройстве.
Чтобы извлечь базу данных с помощью студии Android, выполните следующие действия.
источник
источник
Для Ubuntu (не только?):
см. ответ Сергея, но вместо openssl используйте zlib-flate:
В противном случае openssl, вероятно, выдаст:
потому что openssl не скомпилирован с поддержкой zlib в Ubuntu
источник
Поскольку у меня ничего не работает. Я создаю небольшой сценарий BATCH для Windows на основе других ответов, объединенных вместе. Надеюсь, это кому-нибудь поможет. Простое использование: backupDatabase <PackageName> <ApplicationName> [TargetDirectory]. Он использует метод резервного копирования Сергея и Android Backup Extractor .
источник
вы можете легко извлечь файл sqlite со своего устройства (root не требуется)
запустить adb
cd / sdk / platform-tools ./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"
источник
Если вы пытаетесь сделать это на android 6, запросите разрешение и используйте код ответа на этот вопрос
Как только это будет предоставлено
источник
В качестве альтернативы вы можете использовать мою библиотеку Ultra Debugger . Это позволяет загружать базу данных в виде файла или редактировать значения прямо в браузере. Корень не требуется, очень прост в использовании.
источник
На Mac (root не требуется)
Он скопирует файл sqlite в папку инструментов платформы.
источник
да, если ваше приложение для Android создает копию файла базы данных, доступную для всех.
Android защищает личные данные приложений, поэтому они не видны / недоступны другим приложениям. база данных - это частные данные. ваше приложение, конечно, может читать файл базы данных, чтобы сделать копию файла в какой-то общедоступный видимый файл.
источник
На устройстве с root-доступом вы можете:
источник
Основываясь на ответе Лам Виня, вот простой командный файл, который работает для меня на моем Nexus 7 1-го поколения. Он предлагает пользователю ввести имя пакета, а затем имя базы данных (без расширения .sqlite) и помещает его в c: \ temp. Предполагается, что у вас установлен Android sdk в переменных среды.
источник
Если у вас Android 4.0 или более поздняя версия, и вы используете Mac , то вот сценарий Ruby, который сохранит содержимое вашего приложения на рабочий стол. Я предполагаю, что это также будет работать в Ubuntu, хотя я не тестировал это.
для запуска -> рубин your_ruby_file_name.rb
Этот сценарий предназначен только для «счастливого пути», поэтому убедитесь, что ваше устройство подключено и что adb был добавлен в ваш профиль.
источник
Даю комплексное решение по "сохранению" и "восстановлению" базы данных приложения во внутреннем хранилище (не на ПК с adb).
Я использовал два метода: один для сохранения, а другой - для восстановления базы данных. Используйте эти методы в конце onCreate () в MainActivity (один или другой, если вы хотите сохранить или восстановить базу данных).
сохранить базу данных во внутреннем хранилище:
восстановить базу данных из внутреннего хранилища:
источник
Всегда лучше, если все будет автоматизировано, поэтому я написал простой скрипт на Python для копирования db файла с устройства с помощью ADB. Это экономит время на разработку, если вы делаете это часто.
Работает только с отлаживаемыми приложениями, если устройство не рутировано.
Вот ссылка на суть.
Запустите его как:
python copyandroiddbfile.py
источник
Если вам нужен файл базы данных
См. DDMS> Просмотр файлов
найдите свой файл db по имени вашего пакета
затем нажмите, чтобы извлечь файл с устройства (только для корневого устройства)
источник