Как скопировать файл с помощью 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