как использовать команду adb для отправки файла на устройство без SD-карты

106

Как отправить файл с компьютера на устройство Android, в котором нет SD-карты. Я попытался:

C:\anand>adb push anand.jpg /data/local
3399 KB/s (111387 bytes in 0.032s)

C:\anand>adb push anand.jpg /data/opt
3199 KB/s (111387 bytes in 0.034s)

C:\anand>adb push anand.jpg /data/tmp
3884 KB/s (111387 bytes in 0.028s)

приведенные выше команды для перемещения файла anand.jpgна устройство, но я не получил этот jpgфайл на устройстве. Я не получил никакого успеха в командной строке, я получил только:

3399 KB/s (111387 bytes in 0.032s).
Нихил Кумар
источник
3
adb shell "cd /data/local && mkdir tmp"Тогда попробуй adb push anand.jpg /data/local/tmp. Как проверить наличие файла на устройстве с помощью adb shell?
@RC Я использую команду ls для проверки файлов. Я получил его по крайней мере в представлении DDMS на эмуляторе. но все же я не получил его на устройстве. когда я пытаюсь выполнить команду «adb push», она показывает, что устройство не найдено для реального устройства. но устройства adb показывают устройство.
Nikhil Kumar
Я бы остановил эмулятор, отключил устройство, затем, убедившись, что устройство находится в режиме отладки, подключил устройство и повторил попытку
1
Этот вопрос кажется не по теме, потому что он не о программировании. См. Какие темы можно задать здесь в Справочном центре. Возможно, лучше задать вопрос для энтузиастов Android .
jww
Предложение RC сработало в этом варианте для меня: adb shell "cd /sdcard && mkdir temp"затем abd push x.apk /sdcard/temp"я оказался в папке temp на моей SD-карте и смог выполнить прошивку оттуда.
Kajetan Abt

Ответы:

133

Из терминала Ubuntu у меня работает ниже.

./adb push '/home/hardik.trivedi/Downloads/one.jpg' '/data/local/'
Хардик Триведи
источник
Я работаю над командной строкой Windows, можете ли вы сказать мне в Windows, как это сделать.
Nikhil Kumar
просто удалите './' и используйте простой adb или adb.exe. Убедитесь, что вы находитесь в папке инструментов платформы, если вы не указали путь для android.
Хардик Триведи
2
Можно ли это сделать без рутирования телефона?
Джейкоб
2
@HardikTvedi: Вы говорите, что рутирование необходимо для использования adb push в целом или для этого конкретного места назначения файла? Я использую adb push для записи файла на SD-карту Android-устройства на устройстве без рута.
RenniePet
2
Команда push работает и для телефона без рута, только для папки / data требуется рутированный пользователь.
Хардик Триведи
35

Я сделал это с помощью этой команды:

синтаксис: adb push filename.extension /sdcard/0/

пример: adb push UPDATE-SuperSU-v2.01.zip /sdcard/0/

vincsilver
источник
1
просто переместил mp3-файл с Mac OSX на устройство Android 5.0, и мне пришлось написать имя файла, который будет на устройстве, то есть «adb push /file.mp3 /sdcard/fileOrOtherFileName.mp3»
DoruChidean
28

Следуй этим шагам :

перейдите в Android Sdk, затем путь к инструментам платформы в терминале или консоли.

(на Mac путь по умолчанию: / Users / USERNAME / Library / Android / sdk / platform-tools)

Чтобы проверить SD-карты (внешние и внутренние), установленные на вашем устройстве, выполните следующие команды:

  • 1) ./adb shell (нажмите return / enter)
  • 2) cd - (нажмите return / enter)

теперь вы увидите список каталогов и файлов с вашего устройства Android, там вы можете найти / sdcard, а также / storage

  • 3) cd / storage (нажмите return / enter)
  • 4) ls (нажмите return / enter)

вы можете увидеть sdcard0 (обычно sdcard0 - это внутреннее хранилище) и sdcard1 (если присутствует внешняя SDCard)

  • 5) выход (нажмите return / enter)

выйти из оболочки adb

  • 6) ./adb push '/Users/SML/Documents/filename.zip' / storage / sdcard0 / path_to_store / (нажмите return / enter)

скопировать файл

SML
источник
11

Иногда нужно расширение,

adb push file.zip /sdcard/file.zip

Йонас Борггрен
источник
1
У меня LG Nexus 5, и вы не можете поместить в него внешнюю SD-карту, но часть внутренней памяти ведет себя так, как будто это была SD-карта. В этом случае SD-карта - это просто каталог на корневом уровне. Вы можете проверить это, вызвав 'adb shell' Когда вы находитесь в оболочке, вызывайте 'ls' для
вывода
9

сначала запустите команду ниже

adb root
adb remount

Затем выполните то, что вы ввели ранее

C:\anand>adb push anand.jpg /data/local
C:\anand>adb push anand.jpg /data/opt
C:\anand>adb push anand.jpg /data/tmp
Рокки Чен
источник
4

У меня Nexus 4, то есть без внешнего хранилища. Однако Android считает, что он есть, потому что он монтирует отдельный раздел под названием «хранилище», смонтированный в «/ storage / emulated / legacy», поэтому попробуйте нажать туда:adb push anand.jpg /storage/emulated/legacy

Maik
источник
Для моего nexus 4 /sdcard.file.zip работал как шарм.
sud007
4

Мое решение (пример со случайным видеофайлом mp4):

  1. Установите файл на устройство:

    adb push /home/myuser/myVideoFile.mp4 /storage/emulated/legacy/
  2. Получить файл с устройства:

    adb pull /storage/emulated/legacy/myVideoFile.mp4 

Чтобы получить путь в коде:

String myFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myVideoFile.mp4";

Это все. Это решение не вызывает проблем с разрешением и отлично работает.

Последний пункт: я хотел изменить информацию о метаданных видео. Если вы хотите писать на свое устройство, вам следует изменить разрешение в AndroidManifest.xml. Добавьте эту строку:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Alex
источник
3

Так как для разных версий существуют разные пути. Вот общее решение:

Найдите путь ...

  1. Введите adb shellв командной строке.
  2. Потом lsи Enter.

Теперь вы увидите файлы и каталоги устройства Android. Теперь с помощью комбинации lsи cd dirNameнайдите путь к внутреннему или внешнему хранилищу.

В корневом каталоге имена каталогов будут такими, как и mnt, sdcard, emulator0,т. Д.

Пример: adb push file.txt mnt/sdcard/myDir/Projects/

М. Усман Хан
источник
3

Попробуйте это вставить во внутреннюю память.

adb push my-file.apk ./storage/emulated/0/

Работает с устройством One plus без SD-карты.

Найтик Сони
источник
0

Вы пытаетесь писать в системные папки. С ADB у вас есть доступ root (admin), поэтому вы видите системные папки, одна из которых является sdcard, поэтому для отправки изображения вы можете использовать

D: \ Program Files \ Android \ sdk \ platform-tools \ adb push am files \ android sdk \ adb.exe push C: \ Downloads \ anand.jpg / sdcard / pictures /

NB: C: \ Downloads \ anand.jpg замените на путь и имя изображения ..

user3555061
источник
0

Некоторые версии Android не запускают правильные задачи по обновлению состояния файловой системы. Вы можете вызвать явное намерение обновить состояние файловой системы. (Я только что тестировал, находясь в той же ситуации OP)

adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///

(Вы можете передать конкретный путь к файлу вместо file:///подобного file:///sdcard)

решатель
источник
0

В моем случае у меня была уже удаленная SDCard, все еще зарегистрированная в Android. Итак, я долго нажимал на запись для моей старой SDCard под:

Settings | Storage & USB

и выбрал «Забыть».

Впоследствии нормальный

adb push myfile.zip /sdcard/

работал нормально.

Дирк
источник
0

Возможно, это лучший ответ, который вы можете прочитать. Установите Android Studio. Затем просто перейдите к просмотру и откройте обозреватель устройств. Щелкните папку правой кнопкой мыши и просто загрузите файл.

Рушаб Гедам
источник