Получить базу данных SQLite из приложения Android
Мне нужно получить базу данных SQLite из приложения Android из устройства Genesis, где пользователь заселен вручную.
Как я могу создать другое приложение или любой другой способ получить этот db и сохранить на месте, где я могу получить?
obs: устройство имеет root
Спасибо
Ответы
Ответ 1
Шаги от.../платформенных инструментов Android на cmd:
1) тип adb shell
2) run-as
com.your.package
3) тип ls
cache
databases
lib
Вы можете найти здесь Database
Здесь... Также вам не понадобилось root
Устройство
Надеюсь, это поможет вам...
Ответ 2
Если у вас есть устройство, прикрепленное к коробке с adb на PATH, вы можете использовать эту команду:
adb -d shell 'run-as your.package.name.here cat /data/data/your.package.name.here/databases/your_db_name_here.sqlite > /sdcard/recovered_db.sqlite'
Или вы можете использовать Ecliplse DDMS file explorer.
Ответ 3
После того, как вы пробовали десятки команд, которые не работали для меня на Marshmallow, я нашел этот, который работает (по крайней мере для отладочных приложений):
adb shell "run-as your.package.name cp /data/data/your.package.name/databases/you-db-name /sdcard/file_to_write"
Тогда вы просто можете просмотреть БД с помощью aSQLiteManager, например.
Ответ 4
Вы можете использовать этот script.
humpty.sh
Вы должны знать имя пакета приложения и имя базы данных sqlite.
Вы можете проверить доступные базы данных.
$ adb shell
$ run-as <package-name>
$ ls databases/
Сбросить базу данных или другой файл.
./humpty.sh -d <package-name> databases/<db-name>
Ответ 5
Вы можете включить библиотеку Stetho в ваше приложение,
http://facebook.github.io/stetho/
который позволит вам получить доступ к вашей базе данных с помощью инструментов Chrome Web Debug
или используйте следующую оболочку script:
#!/bin/bash
echo "Requesting data from Android"
adb backup -f data.ab -noapk YOUR.APK.NAME
echo "Decoding...."
dd if=data.ab skip=24 iflag=skip_bytes | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
rm data.ab
echo "Done"
`` `
Ни один из вышеперечисленных методов не требует, чтобы ваше устройство было внедрено, а последнее работает даже в приложениях, которые вы сами не пишете, если ApplicationManifest.xml не содержит "backup = false"