Руководство

Android File Transfer и стена в 4 GB

Файлы поменьше копируются, а одно длинное видео нет. Android File Transfer никогда не переносил файлы больше 4 GB, а у SD-карт с FAT32 есть своё ограничение в 4 GB. Почему так и что работает вместо него.

Android File Transfer, старое приложение Google для телефонов Android на Mac, не может скопировать файл больше 4 GB. Всё, что меньше, проходит, а длинное видео в 4K, фильм, образ диска или архив резервной копии не проходят. Google так и не объяснил это ограничение. Вероятная причина в 32-битном поле размера в MTP, протоколе, на котором говорило приложение, а у других инструментов, работающих через MTP или adb, такого ограничения нет.

Обойти его можно другим инструментом: приложением для MTP, которое умеет работать с большими файлами, adb или телефоном, смонтированным в Finder. Один случай не исправит никакой инструмент: если файл отправляется на SD-карту, отформатированную в FAT32, сама карта не может хранить файл размером 4 GB и больше.

Как это распознать

Google больше не предлагает Android File Transfer. Его старая страница теперь отправляет пользователей Windows к Quick Share, а версии для Mac у него нет. Если приложение у вас ещё осталось, ограничение стало ещё одним поводом от него отказаться: в статье о том, чем заменить Android File Transfer, собраны варианты.

Откуда берётся ограничение

MTP описывает каждый файл на телефоне небольшой записью, набором данных ObjectInfo, где хранятся имя файла, формат, родительская папка и размер. Поле размера, «Object Compressed Size», представляет собой беззнаковое 32-битное число. Наибольшее значение, которое оно вмещает, равно 4 294 967 295, что на один байт меньше 4 GiB.

Для больших файлов в MTP пришлось добавить обходной путь. Если файл не помещается в поле, туда записывается 0xFFFFFFFF, максимальное допустимое значение, а настоящий размер хранится в отдельном 64-битном свойстве «Object Size», которое компьютер должен запросить отдельным запросом. Собственный код MTP в Android описывает это так же: размер в записи объекта 32-битный, а всё, что больше 4 GB, берётся из свойства, которое получают другой операцией.

Инструмент, который читает только 32-битное поле или никогда не передаёт 64-битное при копировании на телефон, не справится с файлом больше 4 GB. Android File Transfer ведёт себя точно как такой инструмент. Google этого не подтверждал, поэтому это вероятное объяснение, а не задокументированное. Подробнее о том, как работает MTP, в статье об устройстве MTP.

У SD-карт с FAT32 своё ограничение в 4 GB

FAT32 тоже хранит размер каждого файла в 32 битах, поэтому ни один файл на карте FAT32 не может достичь 4 GiB. Это свойство формата карты, а не кабеля или приложения. Код MTP в Android проверяет это ещё до начала передачи: если у хранилища назначения есть максимальный размер файла, как у карты FAT32, телефон отклоняет файл размером 4 GB и больше как слишком большой.

exFAT хранит размеры в 64 битах, и такого ограничения у него нет. Когда стандартный Android сам форматирует карту на телефоне, который поддерживает оба формата, он выбирает FAT32 для карт примерно до 32 GB и exFAT для более крупных. Так что в FAT32 скорее всего окажется именно маленькая карта.

Чтобы проверить, вставьте карту в кардридер на Mac и посмотрите на неё в Дисковой утилите или выделите её в Finder и выберите Файл > Свойства. FAT32 отображается как MS-DOS (FAT32). Чтобы сменить формат, карту нужно отформатировать, а это сотрёт её, так что сначала скопируйте с неё всё. Если форматируете её в exFAT на Mac, прежде чем заполнять, убедитесь, что телефон её читает. Больше о картах в статье о SD-картах Android на Mac, а если заполнять карту в кардридере, Mac к тому же оставит на ней файлы «._».

Как это обойти

ИнструментФайлы больше 4 GBЧто нужно на телефонеГде вы работаете
Android File TransferНетРежим передачи файловСобственное окно, и Google его больше не предлагает
OpenMTPДаРежим передачи файловСобственное окно с двумя панелями
adb push и pullДаОтладка по USBТерминал
SideMountДаОтладка по USBFinder и любое приложение на Mac
Разделение файлаДа, частями, которые потом соединяютТо, что нужно вашему инструментуТерминал или архиватор
Инструменты для файлов больше 4 GB между телефоном Android и Mac. Ни один из них не может положить такой файл на карту FAT32.

Приложение для MTP, которое справляется с большими файлами

OpenMTP бесплатный и с открытым исходным кодом, работает с телефоном в том же режиме передачи файлов, что и Android File Transfer, и прямо заявляет, что передаёт файлы больше 4 GB. Он показывает Mac и телефон в двух панелях своего окна. Если вы не хотите включать отладку по USB, это самая близкая замена.

adb

adb, Android Debug Bridge, копирует файлы любого размера. Установите Platform-Tools от Google, включите отладку по USB (как включить отладку по USB), разрешите доступ Mac на телефоне и копируйте из Терминала:

adb pull /sdcard/DCIM/Camera/VID_20261016_101500.mp4 ~/Movies/
adb push ~/Movies/film.mkv /sdcard/Movies/

Имя файла выше приведено для примера; adb shell ls /sdcard/DCIM/Camera покажет настоящие. В статье adb или MTP объясняется, что разрешает отладка по USB и как отозвать это разрешение.

Телефон в Finder

SideMount сам говорит на adb по кабелю и монтирует телефон как том в Finder, поэтому большой файл копируется обычным копированием в Finder, а другие приложения могут открыть его прямо на телефоне, не копируя. Ограничения в 4 GB нет: видео на 4,5 GB входит в число файлов, на которых его проверяют. Нужны macOS 26 или новее и отладка по USB, и руководство по настройке описывает и то, и другое.

Разделите файл

Если вы застряли с инструментом, у которого есть это ограничение, разрежьте файл на части меньше 4 GB, скопируйте части и соедините их на другой стороне. В Терминале на Mac:

split -b 3900m film.mkv film.mkv.part-
cat film.mkv.part-* > film.mkv

Первая строка создаёт части, вторая снова соединяет их. Чтобы соединить их на телефоне, нужно приложение, которое это умеет, а соединённому файлу всё равно нужно хранилище, способное его вместить, и карта FAT32 таким не является. Способ рабочий, но самый неуклюжий из всех.

Вопросы

Ограничение 4 GB в Android или в приложении для Mac?

Насколько можно судить, в Android File Transfer. MTP в Android умеет переносить файлы большего размера во внутреннюю память телефона, и другие инструменты для Mac, например OpenMTP, adb и SideMount, их копируют. Исключение составляет SD-карта с FAT32: файл размером 4 GB и больше на неё не запишет ни один инструмент.

Почему Google ограничил его 4 GB?

Google этого не объяснял. Вероятная причина в записи объекта MTP, где размер файла хранится в 32-битном поле, которое заканчивается чуть меньше 4 GiB. Для больших размеров нужно отдельное 64-битное свойство, а приложение, похоже, никогда им не пользовалось.

Почему большой файл не копируется на SD-карту даже через другое приложение?

Скорее всего, карта отформатирована в FAT32, которая не может хранить файл размером 4 GiB и больше. Телефон отклоняет такой файл, какое бы приложение его ни отправляло. Скопируйте его во внутреннюю память или сделайте резервную копию карты и переформатируйте её в exFAT.

Есть ли у exFAT ограничение на размер файла?

Такого, с которым вы столкнётесь, нет. exFAT хранит размеры файлов в 64 битах. Стандартный Android использует его, когда форматирует карту больше примерно 32 GB, а для карт поменьше выбирает FAT32.

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

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

Скачать для macOS