Руководство

adb или MTP: два способа передавать файлы по одному кабелю

Телефон Android отдаёт свои файлы компьютеру двумя способами. Первый для всех и не требует настройки. Второй для разработчиков, требует одного переключателя и умеет гораздо больше.

MTP вы получаете, когда выбираете Передача файлов в настройках USB на телефоне. Больше ему ничего не нужно: он работает с любым компьютером, где есть приложение для MTP, и показывает файлы телефона списком, в который и из которого их можно перетаскивать. adb, или Android Debug Bridge, служит протоколом инструментов разработчика Android. Для него нужно один раз включить параметр Отладка по USB, а взамен компьютер получает службу копирования файлов, оболочку на телефоне и всё, что построено на них.

Для нескольких фото на чужом компьютере проще MTP. Для Терминала, скриптов, больших папок, файлов больше 4 GB или телефона, с которым хочется работать как с диском, сильнее adb. Ни тот ни другой не встроен в macOS, так что на Mac оба приходят через приложение или отдельную загрузку.

Что такое MTP

MTP, Media Transfer Protocol, появился в Microsoft как расширение протокола камер PTP, и Android использует его для передачи файлов по USB с 2011 года. Телефон сохраняет контроль над своей памятью и предлагает каждый файл и каждую папку как пронумерованный объект. Компьютер запрашивает список, затем каждый объект, по одной операции за раз. В статье об устройстве MTP рассказано, как он работает и почему Mac не может смонтировать его сам.

Что такое adb

adb входит в SDK Platform-Tools от Google, бесплатную загрузку для macOS, Windows и Linux. У него три части: команда adb, которую вы вводите, сервер, который работает в фоне на компьютере, и демон на телефоне, который ему отвечает. Android Studio не нужен. На Mac с Homebrew его устанавливает одна команда:

brew install --cask android-platform-tools

Когда телефон подключён и разрешил доступ, для работы с файлами важны вот эти команды:

adb devices
adb pull /sdcard/DCIM/Camera ~/Pictures/Phone
adb push ~/Music/Album /sdcard/Music/
adb shell ls -l /sdcard/Download

adb pull копирует файл или целую папку с телефона, adb push копирует их на телефон, а adb shell выполняет команду на телефоне или открывает интерактивную оболочку, если команду не указать.

Что каждому нужно на телефоне

MTP: режим передачи файлов

  1. Разблокируйте телефон и подключите кабель.
  2. Нажмите на уведомление Зарядка устройства через USB.
  3. В разделе Режим работы USB выберите Передача файлов. На Pixel этот пункт называется Передача файлов / Android Auto (File transfer / Android Auto).

Большинство телефонов при следующем подключении снова переходят в режим зарядки. Если вам это не нужно, в разделе «Для разработчиков» есть настройка Конфигурация USB по умолчанию.

adb: отладка по USB

  1. Откройте Настройки > О телефоне и нажмите Номер сборки семь раз. На Samsung этот пункт находится в разделе Сведения о телефоне > Сведения о ПО.
  2. В появившемся разделе Для разработчиков включите параметр Отладка по USB.
  3. Подключите кабель. Телефон покажет запрос Отладка по USB с отпечатком RSA-ключа компьютера. Отметьте Всегда разрешать отладку с этого компьютера и нажмите Разрешить.

Производители переставляют эти меню, поэтому в статье о том, как включить отладку по USB, есть шаги для Samsung, Pixel, Xiaomi, OnePlus и Motorola.

Безопасна ли отладка по USB?

Отладка по USB безопаснее, чем звучит её название, если разрешать доступ только своим компьютерам. Начиная с Android 4.2.2 телефон не выполнит ни одной команды adb от компьютера, пока кто-нибудь не разблокирует его и не примет ключ этого компьютера.

У MTP модель проще: телефон должен быть разблокирован, и тот, у кого в руках кабель, получает общую память, пока включена передача файлов. Отдельного разрешения для каждого компьютера нет.

Что умеет каждый

Приложение для MTPadb в ТерминалеSideMount (adb в Finder)
На телефонеПередача файлов, выбирается при подключенииОтладка по USB, включается один разОтладка по USB, включается один раз
Копирование в обе стороныДаДаДа
Файлы больше 4 GBЗависит от приложенияДаДа
Открыть файл на месте из любого приложения MacТолько в приложении, которое монтирует телефонНет, сначала pullДа
Терминал, скрипты и rsyncНетСвои команды, без rsyncДа, на томе
Оболочка на телефоне, установка приложенийНетДаНет
По Wi-FiНетДа, Android 11 или новееДа, Android 11 или новее
Что даёт каждый способ на Mac. На современном телефоне оба протокола быстры по чистой пропускной способности, поэтому скорость в таблицу не вошла.

Объектная модель MTP объясняет большую часть первого столбца. Она выдаёт объекты целиком по номеру, по одной операции за раз, а это удобно для перетаскивания файлов в окно и из окна. Файловая служба adb работает с путями, чего и ждут Терминал и скрипты, а его оболочка позволяет находить, перемещать и удалять файлы на телефоне, ничего не копируя.

Общее у них одно: держать телефон одновременно может только одна программа. Одна сессия MTP или одно подключение adb. Если открыто одно приложение для MTP, другое подключиться не сможет, и держать телефон в каждый момент может только один сервер adb.

Что выбрать и когда

Если вы пользуетесь и SideMount, и своим adb, они работают по очереди: остановите свой сервер adb перед монтированием, а извлечение телефона в Finder возвращает его вашему adb. Руководство по настройке проводит через первое подключение, а в статье обо всех способах передать файлы между Android и Mac есть и беспроводные варианты.

Вопросы

adb быстрее MTP?

Сам по себе нет. На современном телефоне с кабелем USB 3 оба быстро передают большие файлы, и приложение на компьютере значит больше, чем протокол. Телефон или кабель с USB 2 ограничивают любой из них примерно от 20 до 40 MB/s.

Нужен ли Android Studio, чтобы пользоваться adb?

Нет. adb входит в SDK Platform-Tools от Google, небольшую отдельную загрузку, или ставится через Homebrew командой brew install --cask android-platform-tools. Некоторые приложения для Mac сами говорят на adb, и им не нужно ни то ни другое.

Может ли кто-то скопировать мои файлы через отладку по USB?

Только с компьютера, который телефон уже разрешил. Новому компьютеру нужен разблокированный телефон и принятый на нём запрос на отладку по USB. Для надёжности воспользуйтесь пунктом «Отозвать доступ для отладки по USB» в разделе «Для разработчиков» или выключайте отладку по USB, когда она не нужна.

Почему adb devices пишет unauthorized?

Телефон ещё не принял ключ этого компьютера. Разблокируйте его и найдите запрос на отладку по USB. Если запрос не появляется, отзовите разрешения в разделе «Для разработчиков» и подключите кабель снова, чтобы телефон спросил заново.

Ваш телефон Android в Finder.

Семь дней бесплатно, без карты. macOS 26 или новее.

Скачать для macOS