Попытка извлечь один файл с помощью
adb pull /data/data/com.corp.appName/files/myFile.txt myFile.txt
терпит неудачу с
failed to copy '/data/data/com.corp.appName/files/myFile.txt myFile.txt' to 'myFile.txt': Permission denied
несмотря на то, что на устройстве включена отладка по USB.
Мы можем обойти проблему архаичным путем
adb shell
run-as com.corp.appName
cat files/myFile.txt > myFile.txt
но это громоздко для более чем одного файла.
Как я могу вытащить каталог /data/data/com.corp.appName/files на мой MacBook?
Сделать это напрямую или через транзит в / storage / sdcard0 / myDir (откуда я могу продолжить передачу файлов Android) нормально.
Дополнительный комментарий
Может быть, просто бег
adb backup -f myFiles com.corp.appName
сгенерирует файлы, которые я ищу. В этом случае я ищу способ распаковать полученную резервную копию!
Ответы:
adb backup запишет архив для Android:
Этот архив можно преобразовать в формат tar, используя:
Ссылка:
http://nelenkov.blogspot.ca/2012/06/unpacking-android-backups.html
Найдите "Обновить" по этой ссылке.
В качестве альтернативы можно использовать средство извлечения резервных копий Android для извлечения файлов из файла backup (
.ab
) Android .источник
bs=24 skip=1
намного быстрее, чемbs=1 skip=24
(в моей системе 38,6 МБ / с против 1,7 МБ / с) :)dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
(из приведенного выше источника)dd
командой на моем MacBook на работе. Вместо этого я используюjava -jar ./abe.jar unpack data.ab data.tar
. Вы можете скачать утилиту abe по ссылке sourceforge.net/projects/adbextractor/files/?source=navbarandroid:allowBackup="false"
dd if=myAndroidBackup.ab bs=24 skip=1 | openssl zlib -d | tar -x
У меня была такая же проблема, но я решил ее следующим образом:
После этого вы можете запустить
источник
Вот что у меня сработало:
Я печатаю базу данных прямо в локальный файл.
источник
adb shell
------ внутри оболочки запуститьrun-as com.example.test
------ внутри оболочки запуститьcat ...db > /mnt/sdcard/file.db
------adb pull /mnt/sdcard/file.db .
------ конец (извините, разрывы строк не работают)adb shell
не сработало для меня, но после этого ответа иadb exec-out
его использования сработало!В MacOSX, объединив ответы Калафа и Олли Форда, у меня сработало следующее.
В командной строке (убедитесь, что adb находится на вашем пути, мой был в ~ / Library / Android / sdk / platform-tools / adb) и с подключенным устройством Android и в режиме отладки USB запустите:
Ваше устройство Android запросит у вас разрешение на резервное копирование данных. Выберите «РЕЗЕРВНОЕ КОПИРОВАНИЕ ДАННЫХ».
Подожди несколько минут.
Резервная копия файла появится в каталоге, в котором вы запустили adb.
Теперь запустите:
Теперь у вас есть файл backup.tar, который вы можете распаковать следующим образом:
И посмотрите все файлы, хранящиеся в вашем приложении.
источник
adb backup
иdd
шаги конверсии дегтя не дают никакого статуса во время работы и может занять несколько минут , если у вас есть много данных. Потерпи!Более новые версии Android Studio включают в себя проводник файлов устройства, который, как я обнаружил, является удобным графическим способом загрузки файлов из моей разработки Nexus 7.
Вы должны убедиться, что на устройстве включена отладка по USB.
Взаимодействуйте с содержимым устройства в окне проводника файлов. Щелкните правой кнопкой мыши файл или каталог, чтобы создать новый файл или каталог, сохранить выбранный файл или каталог на свой компьютер, загрузить, удалить или синхронизировать. Дважды щелкните файл, чтобы открыть его в Android Studio.
Android Studio сохраняет файлы, которые вы открываете таким образом, во временном каталоге вне вашего проекта. Если вы вносите изменения в файл, открытый с помощью проводника файлов устройства, и хотите сохранить изменения обратно на устройство, вы должны вручную загрузить измененную версию файла на устройство.
Полная документация
источник
Вы можете использовать этот сценарий оболочки ниже. Он также может извлекать файлы из кеша приложения, в отличие от
adb backup
инструмента:Тогда вы можете использовать это так:
источник
rm /sdcard/
подставляете, повезло, что это не так-rf
.Если вы используете компьютер Mac и телефон Samsung, это то, что вам нужно сделать (поскольку
run-as
не работает на Samsung иzlib
не работает на Mac)Сделайте резервную копию каталога данных вашего приложения
adb backup -f /Users/username/Desktop/data.ab com.example
Вам будет предложено ввести пароль для шифрования в вашем телефоне, не вводите его. Просто нажмите «Сделать резервную копию моих данных». См. Как принять BackUp?
После успешного резервного копирования вы увидите
data.ab
файл на рабочем столе. Теперь нам нужно преобразовать это вtar
формат.Используйте для этого Android Backup Extractor . Скачать | Исходный код
Загрузите его, и вы увидите
abe.jar
файл. Добавьте это в свою переменную PATH.Выполните это, чтобы сгенерировать tar- файл:
java -jar abe.jar unpack /Users/username/Desktop/data.ab /Users/username/Desktop/data.tar
Извлеките файл data.tar, чтобы получить доступ ко всем файлам.
источник
data.tar
простоdata.tar.cpgz
извлекал из @henryЭтот ответ основан на моем опыте работы с другими ответами и комментариях в ответах. Я надеюсь, что смогу помочь кому-нибудь в подобной ситуации.
Я делаю это в OSX через терминал.
Раньше ответ Виниция Авеллара отлично работал у меня. Мне почти всегда была нужна база данных с устройства из приложения отладки.
Сегодня у меня был случай использования, когда мне нужно было несколько личных файлов . В итоге я нашел два решения, которые подошли для этого случая.
Вот мой сценарий для извлечения нескольких личных файлов, которыми я поделюсь с вами, читатель, который также исследует этот удивительный вопрос;):
Суть: https://gist.github.com/davethomas11/6c88f92c6221ffe6bc26de7335107dd4
Вернемся к методу 1 : расшифровка резервной копии с помощью Android Backup Extractor
Вот шаги, которые я предпринял на своем Mac, и проблемы, с которыми я столкнулся:
Сначала я поставил резервную копию в очередь (и установил пароль для шифрования моей резервной копии, это требовалось моему устройству):
Во-вторых, я скачал отсюда только abe.jar: https://sourceforge.net/projects/adbextractor/files/abe.jar/download
Далее я запустил:
В этот момент я получил сообщение об ошибке. Поскольку мой архив зашифрован, java выдала мне ошибку, которая потребовалась для установки некоторых библиотек политик безопасности.
Наконец, я просто побежал ( после повторного выполнения предыдущей команды )
Теперь важно отметить, что если вы можете просто бегать от лица и кошки, это будет намного быстрее. Во-первых, вы получаете только те файлы, которые вам нужны, а не все приложение. Во-вторых, чем больше файлов (+ шифрование для меня), тем медленнее передача. Поэтому знание того, как это сделать, важно, если у вас нет run-as на OSX, но сценарий должен быть первым goto для приложения отладки.
Имейте в виду, что я написал его сегодня и протестировал несколько раз, поэтому, пожалуйста, сообщайте мне о любых ошибках!
источник
После установки правильных разрешений, добавив следующий код:
adb pull
работает по желанию.см. File.setReadable ()
источник
Начиная с сценария Дэйва Томаса, я смог написать собственное решение для преодоления двух проблем:
Это мой сценарий, который копирует данные приложения на SD-карту, а затем извлекает их
источник
Подобно ответу Тамаса , вот однострочный файл для Mac OS X, позволяющий получить все файлы для приложения с
your.app.id
вашего устройства и сохранить их (в данном случае)~/Desktop/your.app.id
:-d
извлечение из эмулятораисточник
Резервное копирование игровых данных с помощью apk . Нуга Oneplus 2.
источник
adb backup -f myapp.ab -apk com.myapp # backup on one device
adb restore myapp.ab # restore to the same or any other device
Да, точно. Как ни странно, вам также нужен файл с установленным
x
битом. (по крайней мере, на Android 2.3)chmod 755
весь путь вниз работал, чтобы скопировать файл (но вам следует отменить разрешения позже, если вы планируете продолжать использовать устройство).источник
ты можешь сделать:
источник