Как скопировать файл с помощью adb в каталог android, доступный с ПК
если вы подключаете android-устройство к ПК, вы можете просматривать файлы и dirs. Можно получить этот каталог, используя Environment.getExternalStorage()
. Вы можете использовать его из приложения и создавать доступные файлы и каталоги. Работает отлично.
на моих устройствах этот путь выглядит как /storage/emulated/0
и adb push
в этот каталог я получу ошибку отказа в доступе. Можно ли копировать файлы с помощью adb
в ту же папку, что и Проводник Windows?
D:...tools>adb push ACCOUNTS.DB /storage/emulated/0
failed to copy 'ACCOUNTS.DB' to '/storage/emulated/0': Permission denied
58969 KB/s (606505 bytes in 0.010s)
я внедряю автоматизированный импорт / экспорт, и я хочу, чтобы файлы были доступны без adb shell
если что-то пойдет не так.
в настоящее время используется переменная$EXTERNAL_STORAGE
как обходной путь, он работает для обоих adb
и приложения.
устройство: Asus Fonepad 7, Android 5.0, пробовал Genymotion пользовательский планшет 6.0-работает.
2 ответов
попробуйте использовать /sdcard/
. Хотя это сильно не рекомендуется делать в код. Кажется, это единственный способ с adb :
$ adb push somefile /storage/emulated/0/somefile
[100%] /storage/emulated/0/somefile
adb: error: failed to copy 'somefile' to '/storage/emulated/0/somefile': Read-only file system
$ adb push somefile /sdcard/somefile
[100%] /sdcard/somefile
кстати, на моем устройстве они не имеют одинаковое значение : Environment.getExternalStorage()
указывает на /storage/emulated/0/
пока /sdcard
указывает на /storage/emulated/legacy
.
это довольно легко, внутреннее хранилище недоступно на некорневых устройствах. Так как упоминалось в БВТ ответ вам просто нужно нажать ваши данные на sdcard:
adb push somefile /sdcard/somefile
при получении файлов из файловой системы у вас также будет несколько проблем. Но в случае вытягивания базы данных из приложения отладки-вам просто нужно изменить разрешение файла через chmod
.
Здесь у вас есть полезная ссылка - XDA ребята об adb