24 November 2011

Android ICS: эй, где мой любимый USB mass storage?

В Сети поднялась волна праведного гнева -- в Galaxy Nexus, который работает на самой последней версии Android, для USB не был обнаружен режим Mass Storage. Некоторые придурки вообще устроили по этому поводу ритуальные пляски с криками "ваш Google тоже загоняет вас в ональное рабство! я же говорил!".



На самом деле, вся эта история не стоит и выеденного яйца.

Режим USB Mass Storage хорошая и удобная штука, но у нее есть один существенный недостаток -- это низкоуровневый, а значит монопольный, режим доступа к устройству. Т.е. если вы кому-то предоставляете такой доступ к накопителю, сами вы этого доступа лишаетесь. Именно поэтому в подавляющем большинстве телефонов, при активации режима UMS, они переходят в специальный режим блокировки, когда с телефоном ничего нельзя сделать. Некоторые телефоны при этом еще и выходят из GSM сети, а завершение работы в режиме UMS приводит к перезагрузке телефона. В смартфонах режим UMS обычно реализован через демонтирование накопителя. При этом, если у вас были запущены программы, которые работали с этим накопителем, в них начнут сыпаться ошибки, которые часто приводят к аварийному завершению их работы.

Теперь про Android. Изначально предполагалось, что в этой ОС создается отдельный системный раздел, используемый для установки программ и хранения их данных.

Предполагалось, что этот раздел:
а) использует специально оптимизированную и высоконадежную файловую систему (не FAT32);
б) использует специальную, более быструю и надежную, флеш память;
в) размер его, в сравнении со встроенной памятью общего назначения (которая обычно начинается от 8 Гб) относительно не велик.

Задумка эта оказалась не очень удачной, т.к. на практике привела ко всем известной проблеме -- вечной борьбе за каждый килобайт свободной памяти на этом разделе.

То, что мы видим в Galaxy Nexus, есть простое и очевидное решение этого наболевшего вопроса. Вся встроенная флеш память выделена под системный раздел, вместо того, чтобы быть разбитой на два куска -- небольшой системный плюс большой общего назначения разделы. Очевидно, что это гораздо более удобный подход в каждодневном использовании. Побочный эффект такого решения -- невозможность предоставить режим UMS для этого раздела, т.к. очевидно, что система не может продолжить свою работу, демонтировав свой системный раздел для монопольного доступа по USB.
Теперь для доступа по USB к единственному (системному) разделу нам предлагают использовать Media Transfer Protocol, штуку более высокоуровневую, т.к. тут идет манипулирование не на уровне секторов устройства, а на уровне примитивов файловой системы. Фактически происходит абстрагирование клиента от деталей файловой системы, что позволяет, к примеру, давать доступ к ФС, с которой клиент вообще не умеет работать (актуально для связки Windows + Android, т.к. последний использует файловые системы, характерные для Linux, с которыми не дружат ОС от Microsoft). Другое достоинство MTP -- возможность предоставления доступа к устройству в кооперативном режиме, когда, к примеру, с накопителем работает и Android и ПК через USB одновременно.

Пользователям Windows (макоебам: ваше место в айтюнсе с айфоном) замена UMS на MTP не несет вообще никаких существенных изменений. Как копировали файлы в "проводнике", так и будут продолжать копировать. Более того, юзеры продвинутые тоже не пострадают, потому что, например, MTP плагин существует для того же Total Commander'а. Как по мне, при наличии быстрого Wi-Fi куда как проще кидать файлы с его помощью; уверен, для Android софта для подобных целей есть воз и маленькая тележка.
По скорости работы между UMS и MTP каких-то существенных различий быть не должно. Более, вполне возможны реализации, когда MTP работает быстрее.

Крики о "закручивании гаек" -- истерика не очень далеких людей.
Это по-прежнему личное дело OEM, в каком соотношении разбивать внутреннюю память, т.е. права создания выделенного системного раздела (а-ля олдскульный Android) никто никого не лишал, и мотивация здесь может быть только одна -- удобство пользователей.
И да, любимых SD карточек, с которыми можно работать по UMS, нас тоже никто не лишал.

Люди! О чем вообще весь этот сыр-бор?

Официальный комментарий по ситуации -- http://habrahabr.ru/blogs/android/133172/

зы. Кстати, в iOS тоже есть специальный системный раздел (около 2 Гб в iPad первого поколения). Но он не используется для установки приложений, тут находятся исполняемые файлы самой ОС плюс всевозможные временные файлы. Мотивация создания такого раздела -- более высокая надежность системы и корректная работа в условиях исчерпания свободного места на накопителе.

No comments:

Post a Comment