
В самых первых версиях 1.5-1.6 карте памяти была отведена скромная роль хранилища для медиа контента, и ни о какой возможности переноса туда части системы или приложений даже речи не шло. Шло время, магазин приложений рос по экспоненте, и стало очевидно, что объем ПЗУ в устройствах стал явно маловат, и тогда в 2010 году вместе с выходом Android 2.2 Froyo пользователям дали заветную возможность переносить приложения на карту памяти.

Так в Android 2.2 та самая кнопка дала возможность переносить данные приложений, но только там, где разработчики это предусмотрели. Способ был не идеальный, но экономил приличное количество памяти. Тем временем, к моменту появления Android 2.3, все прогрессивные пользователи просто получали root права, ставили известный каждому Titanium backup и с его помощью переносили приложения целиком. Исключение из этого составляли только приложения с виджетами — они переноса просто не терпели.

С выходом Android 4.X и еще большим расцветом устройств на платформе чипмейкера MTK популярна стала опция default write disc, которая, по сути, вмешивалась в системную работу с памятью и позволяла ставить приложения сразу и целиком на карту памяти. Конечно же, опция пользовалась большой популярностью у пользователей.
Отлаженный механизм, как и альтернативную лазейку для энтузиастов, усложнил новый поворот в развитии Android. С появлением Android 5, или Lollipop, с невероятно красивым Material design работа с картой памяти для многих аспектов была серьезно затруднена. Даже просто полный перенос данных в том виде, как это было ранее, происходил не всегда, и те же игры держали часть файлов в одной памяти, а часть — в другой. Таким образом, пользователям предлагалось использовать расширяемую память только для хранения мультимедиа контента. На этом фоне случалось немало коллизий, ведь даже официальные приложения Google подчас не умели работать с переносом данных на карту памяти.
Эту задачу продвинутые пользователи могли бы решить посредством Root прав и редактирования файла конфигурации, но к тому моменту многие производители уже обзавелись механизмами детекции вмешательства в ПО и приравняли его к потере гарантии, что не лишено смысла. Таким образом, владельцам флагманов 2014-2015, например Samsung Galaxy Note 4 или LG G4 приходилось привыкать к новым реалиям ввиду полного отсутствия альтернатив.

Официальное или близкое к тому объяснение такого шага было построено на том, что, во-первых, данные на карте памяти хранились без шифрования, что опасно, а во-вторых, использование карт памяти низкого качества, которыми изобиловал рынок, могло привести не только к потере данных, но и серьезно повлиять на производительность устройства.
Разумеется, такой шаг вызвал бурю негодования, ведь уже стали широко доступны карты памяти объемом 128-256 Гбайт со сравнительно гуманной ценой, и сама возможность расширения памяти составляла ощутимое конкурентное преимущество перед «фруктовой компанией».
С выходом актуальной версии Android 6 (Marshmallow) команде, ответственной за разработку Android, наконец удалось найти баланс между полным упразднением возможностей карты памяти и теми проблемами, с которыми они пытались бороться.
Итак, мы подобрались к сути. Функция Adoptable storage сохраняет возможность использования карты памяти в ограниченном режиме, как это было ранее, а также позволяет пользователю сделать единый массив из карты памяти и ПЗУ устройства. Ввиду того, что в Nexus 5X и 6P нет карт памяти, самым первым с этой опцией стал продукт HTC One A9, а позже ее получил уже прошлогодний флагман HTC One M9.

Где искать?
Возможность настройки режима работы карты памяти появляется сразу, как только система «видит» её, и не важно, происходит ли это при первом старте или много позже. При выборе опции использования «Внутренней памяти» телефон сначала отформатирует карту памяти, а потом виртуально присоединит ее к системе.
Важно! Данные, которые были на карте памяти «до», пропадут навсегда, так что сохраняйте их заранее.
После успешного форматирования и логического объединения телефон предложит перенести мультимедийные данные (фото, изображения, музыку и так далее) на ту часть памяти, которая относится к карте памяти. Стоит выбрать перманентный перенос и подождать несколько минут, так как процесс сопровождается некоторыми ограничениями в работе Android.



Согласно описанию, система должна сама решать, куда ей ставить приложения, но перепроверить вручную будет не лишним.
Эксперимент
Для теста выберем два приложения (игры), каждое из которых содержит и исполняемый, и большой объемы дополнительных ресурсов, а также проверим, насколько полно можно перенести небольшое приложение.
Итак, скачиваем Asphalt 8 и запускаем его, чтобы игра смогла докачать 830 мегабайт текстур и прочих данных. После этого даже не обязательно ее запускать сам процесс игры, в разделе «Хранилище» уже будет видна статистика по распределению памяти: игра окажется полностью в памяти телефона. Теперь идем в настройку внутреннего хранилища и выбираем перемещение на карту памяти, после чего снова смотрим статистику распределения памяти. Как и до установки игры, в памяти устройства занято 2,89 ГБ, а в деталях игры явно указано, что и сам файл, и данные «переехали» на карту памяти.



Повторим эксперимент с ещё одной игрой, разработчик которой хранит дополнительные файлы непосредственно на стороне магазина Google. Скачиваем и устанавливаем Reckless Racing 3 и повторяем те же действия. И снова приложение хранится в памяти телефона, и снова после перемещения в памяти устройства занято 2,89 ГБ.



После проведенных манипуляций игры были запущены без проблем с производительностью.
В качестве заключительного этапа эксперимента пробуем перенести простой и «лёгкий» Facebook Messenger.


И это приложение также полностью переносится на карту памяти. Ура? Ура!
Особенности
- При объединенной памяти и подключении к ПК/MAC будет виден только один накопитель, и это нормально, ведь логический раздел тоже один.
- Не стоит соблазняться картами памяти с AliExpress за два доллара: система будет на них ругаться при переносе, предупреждая о возможных проблемах, среди которых могут быть и снижение производительности устройства, и пропадание приложений при перезагрузке телефона. Кроме того, карта памяти в целом все еще уступает топовым решениям, таким как UFS 2.0 в Samsung Galaxy S7/S 7 EDGE.
- Карта памяти в таком режиме форматируется до объединения (не забудьте сохранить данные!) и шифруется по умолчанию. Это не даст использовать её в другом телефоне или устройстве в режиме as-is, только после очередного форматирования.
- Сброс телефона с такой картой памяти до заводских настроек снова приведет нас к форматированию, казалось бы, уже родной карты, так как телефон откажется читать с нее старый контент. Поэтому если и выполнять объединение памяти, то только с настроенной резервной копией всего самого нужного в облако. И это уже не шутки.
Резюмируя
Опция, безусловно, предлагает крайне полезную и удобную возможность, особенно после того, что сделали в Android 5.
Флагманы с очень быстрой памятью, как правило, располагают и приличным объемом ПЗУ, и производители, понимая это, уже удаляют данную функцию. А вот для среднего и бюджетного сегментов поддержка Adoptable storage сможет решить частую проблему нехватки места при установке более чем Х приложений.
Недорогих устройств с последней на сегодняшний день версией Android становится все больше и больше, но вместе с тем растет и необходимость облачного копирования данных, и этим не стоит пренебрегать

Комментарии (50)
denis_g
04.05.2016 19:12+1Помню, давным-давно, еще на девайсе с Андроидом 2.3 и 150 с хвостиком мегабайтами (!) внутренней памяти вполне успешно пользовался приложением Link2SD, которое создавало дополнительный ext2-раздел на карточке, физически (mv )перекидывало туда те приложения, которые ты отмечал, а потом создавало на перекинутые файлы симлинки в основной памяти. Не идеальный вариант, конечно, но работало, блин.
Интересно было бы почитать, как в 6-м Андроиде вышеописанный механизм реализован. Может быть, он даже имеет что-то общее с тем, как это было сделано в Link2SD :)maximfilin
04.05.2016 19:48По факту там есть общее, тут просто логическое объединение массивов.
Lsh
04.05.2016 22:11А точнее? Чего и как монтируется? Там ведь нет никакого raid или lvm, не может быть полфайла там, а полфайла тут. Я правильно понимаю?
maximfilin
04.05.2016 22:30+1adb shell
sm list-disks (получаем ID диска где у нас карта памяти)
sm partition disk:179:160 (если целиком) или
sm partition disk:179:160 (если целиком) или mixed XX, где XX процент от карты памяти, который забираем под память
И вот если мы идем по пути целого диска, то было до
shell@p1:/ $ sm list-disks
disk:179,64
shell@p1:/ $ sm list-volumes all
private mounted null
public:179,65 mounted 9F29-15FD
emulated mounted null
Стало после
shell@p1:/ $ sm set-force-adoptable false
shell@p1:/ $ sm list-volumes all
private:179,66 mounted 0ef3b40b-103f-4331-b0ce-92f105f8xxxx
private mounted null
emulated mounted null
emulated:179,66 unmounted null
vikarti
04.05.2016 19:29c Adaptable Storage проблема в том что некоторые производители вроде Sony берут… и вырезают функционал просто
maximfilin
04.05.2016 19:50Ну тут пока его наличие не обязательно, но в младших и средних устройствах наверняка не будут. (Как минимум то, что я вижу в стадии «скоро на прилавок» опцию имеет)
nochkin
04.05.2016 19:52> Не стоит соблазняться картами памяти с AliExpress за два доллара
Там даже не в скорости проблема, а в том, что многие продавцы толкают подделки (например, пишет что 64GB, а на самом деле там работает только 4 или 8).maximfilin
04.05.2016 20:32ну сколько бы памяти там не было, скорости, как правило там никакие.
ClearAirTurbulence
04.05.2016 20:49Низкую скорость видно сразу, а то, что данные переписываются по кругу — не всегда.
maximfilin
04.05.2016 20:50Кстати такого давно уже не видел.
Sleepwalker_ua
05.05.2016 01:13+1Все еще бывает. недавно надо было стопочку дешевых флешек взять, сугубо файлопомоечные затычки, на работу (удобно, т.к. и ноут, и планшет, и комп их понимаю прекрасно через копеечный адаптер или вообще без оного. и стоят чуть дешевле чем USB), microSD, а на али в горячих товарах восьмигиговые шли чуть ли не дешевле 2гб, скидка 65%, ну заказал 20 штук, пришли, начал тестить — 12 штук на честные 8Гб, еще 6 двухгиговых и 2 штучки — на 128 мегабайт. Проверял просто — кидал файл на 6,5 Гб и вытаскивал его обратно, ежели все норм — значит честная, если плохо — кидал файл меньшего размера. Вот те которые на 128 метров оказались самыми шустрыми (запись аж 9мб, чтение чуть меньше 11), но и самыми маленькими (всего один PDF на 96 метров влез, и дальше все). А у остальных так, чтение в районе 5 мб, запись — от 3 до 6. В принципе жить можно, с учетом цены (около 1,3 бакса за штучку-то! у нас самые-самые дешевые вдвое дороже стоят, на 4гб, а 2гб, как ни странно, еще дороже), но диспут открыл и претензию высказал, еще пять баксов вернули за проблемные…
isden
05.05.2016 11:36Да даже объем может быть в порядке, но вот только чип может быть дефектный, либо проблемный, другого производителя (т.е. та же подделка). Что приводит к внезапным отвалам карточки, проблемам с файловой системой и т.п. Лично такое наблюдал несколько раз.
nochkin
05.05.2016 18:18Слышал про такое по поводу скорости, но ни разу не встречал лично. А карточки такие я покупаю достаточно часто.
Areso
04.05.2016 20:03Правильно ли я понимаю, что, к примеру, если устройство умерло, а карточка — целая, то информация на карте (фото, видео) будут утеряны? Ведь часть разметки логического тома была на устройстве? И наоборот, если умерла (или её просто извлекли) карту, то будут какие-то особенности работы оставшихся приложений? Т.е. уместна ли здесь аналогия с raid-0? Как тут с избыточностью и контролем целостности? Можете объяснить эти моменты подробнее?
Lsh
04.05.2016 20:08Маловероятно, что создается RAID или т.п. Но, данные всё равно фиг достанешь, т.к.:
«The platform randomly generates an encryption key for each adopted device, and that key is stored on the internal storage of the Android device.»Areso
04.05.2016 20:10Т.е. не то что на повторное использование кэша программ/игр можно не расчитывать, но даже фотки/видео потом не вытащить с такой флешки?
maximfilin
04.05.2016 20:33Если устройство умерло, а карта памяти осталась, данные утеряны;
Если карту просто извлечь система сообразит и будет работать с тем что осталось как надо (без проблем);
Lsh
04.05.2016 20:03Всё равно костыли «Apps can be placed on adopted storage media only when the developer has indicated support through the android:installLocation attribute.».
https://source.android.com/devices/storage/adoptable.htmlmaximfilin
04.05.2016 20:3950/50 тут использование параметра влияет только на умолчания, а так система сама решит куда (где больше памяти, чего я не увидел в реальной жизни), но просто переместить руками его можно всегда.
vstr
04.05.2016 21:07Товарищи из Мвидео, у вас по ссылке из 9 абзаца доступна карта только на 128 гигов. На 256 гигабайт карт я не нашёл. Исправьте пожалуйста текст или ссылку.
Giriia
04.05.2016 21:40Честно говоря я не понимаю, накой это нужно. Взяли, и довольно удобную фичу превратили в жуков на костылях.
Раньше, я к примеру мог взять карту памяти с телефона и по быстрому перекинуть в комп через картридер, минуя дата кабели и установку всяких драйверов.
Или к примеру мог подключить телефон как флешку и это было удобно, ибо пропадала надобность таскать с собой кучи флешек.
А теперь, под лозунгом борьбы «за приватность и скорость», вводят какую сомнительную фигню.
Не, серьёзно. Кто хранит действительно важные данные в телефоне? Я понимаю борьбу за приватность на настольных компьютерах или ноутбуках, там, где действительно работают с чем то, что лучше не разглашать. Но на телефоне? Что там шифровать? Фоточки с отпуска «не для всех»? Для этого вполне хватит и обычного пароля(что кстати вполне поддерживается для microsd карт, ещё со времён j2me платформы).
А скорость работы… Ну так выведите предупреждение, мол «ваша карта может нарушать работу системы» и всё. Может быть я намеренно купил такую карту из-за отсутствия денег или душащей жабы.
Как же мне припекает от этого, когда отказываются от реально удобных интерфейсов и фич в пользу каких то сомнительных преимуществ.
Lsh
04.05.2016 22:00Не, проблемы и костыли были с самого начала.
На заре андроида, например, было внутренней памяти мало, а карточка большая. Как перенести приложения? Костыли!
Потом некоторые вендоры стали использовать фат раздел на внутренней памяти как карточку.
Вставил карточку, а приложения всё равно валят весь хлам на внутренний раздел. Как исправить? Костыли!
А потом еще лучше! Давайте складывать всё на /data! С одной стороны идея, может быть, и неплохая, т.к. место используется более эффективно.
Но выбора как всегда не завезли. Поэтому, костыли, костыли, костыли!
А иногда такие, мать их, костылищи! Паяльник им в зад!
Это вот как надо извращаться, чтобы от вставленной в Samsung Galaxy карточки польза появилась
Просто система изначально ущербная.maximfilin
04.05.2016 22:12Самс еще раньше любил бить встроенную ПЗУ на целый зоопарк разделов.
Lsh
04.05.2016 22:13В смысле, больше чем стандартных было? А что это давало?
maximfilin
04.05.2016 22:15Да, там было еще 2-3 лишних, они так делили память на контент пользователя (а иногда и два), предустановки и их «неубиваемость».
Alexey2005
05.05.2016 00:40Android первых версий вообще производил впечатление наколеночной поделки, слепленной студентами во время Google Summer of Code. Только к 5.0 там начали вырисовываться контуры полноценной ОС, но до выработки нормальной архитектуры и избавления от костылей нас ещё лет 5-7 отделяет, не меньше.
fuser
06.05.2016 14:00Symbian OS еще лет 5 назад спрашивала: куда устанавливать jar — во внутр. память или на карточку.
Giriia
05.05.2016 11:42Я примерно так же извращался, когда у меня появился мой первый смартфон(samsung galaxy ace). После явы и китайфонов(тех самых, с .mrp и телевизором), это было вполне нормально и не вызывало какого-то удивления. И даже наоборот, это научило меня лучше понимать что происходит в ОС и как починить ту или иную ошибку.
В принципе да, костылей там дофига, но уже давно найдены способы как их обойти и превратить в достоинства. Ну, или хотя бы сделать так, что б эти костыли не мешали работе девайса.
А теперь сделали какую-то не совсем понятную фичу, которая сводит на нет все достоинства реализации работы с картой памяти, и вводит кучу ограничений и недостатков(как то, невозможность скопировать данные в случае смерти телефона).
CyberAndrew
04.05.2016 21:48Что мешает создателем системы и приложений Android сделать все как в Windows, т.е. чтобы можно было ставить любое приложение на любой диск?
Lsh
04.05.2016 22:01Вы про настольный Windows? Я просто мобильным не пользовался. Кстати, интересно как там с этими проблемами?
maximfilin
04.05.2016 22:05на WM просто был выбор «куда» при установке, там и создавалась папка и на стол/пуск кидался ярлык.
Lsh
04.05.2016 22:08А как с этим на современных мобильных виндах? Под что там можно карточку занять?
maximfilin
04.05.2016 22:11Там сделано отчасти как на MTK — опция default write disc + возможность переместить приложения руками. Но вот кейсы с картой в другом устройстве и шифрованием не смотрел.
Lsh
04.05.2016 22:14Кстати, интересно, почему, когда говорят про возможность смены накопителей местами, говорят про МТК? Это что, какая-то аппаратная фича?
maximfilin
04.05.2016 22:16Они просто первые вкрутили это в BSP и вмести с оным выдавали всем от noname до Huawei, и по факту оно неплохо работало.
Lsh
04.05.2016 22:12Вот если бы они сделали lvm, было бы прикольно.
(Да, я осознаю риски, связанные с отвалом карточки)
unwrecker
04.05.2016 23:01Я из шестых версий Андроида видел только CM13 — там с картой работа была как обычно, отдельным разделом.
А вот объединять в один массив несъёмное и съёмное устройство, быстрое и медленное — это весьма странно по-моему.
Лучше б поддержку ext4fs для карт сделали.maximfilin
04.05.2016 23:25В MOD просто добавили не все на текущем этапе.
about
05.05.2016 19:39@maximfilin подскажите, пожалуйста, при использовании Adoptable storage, смогу ли я без проблем пользоваться TWRP на своём устройстве (не возникает ли проблем с запись на зашифрованную флешку)? И что происходит с внутренней памятью после объединения? Если на моём Swift 16 ГБ внутренней памяти + 32 от SD, то после объединение я буду иметь возможность юзать эти два объёма в виде одного массива для хранения моих данных?
maximfilin
05.05.2016 22:06вот с TWRP вопрос, но скорее всего для банальных вещей да — ибо бэкап он и есть бэкап, а zip со всяким ставятся в system, общий объем будет 16+32 просто. Логически он будет один, да.
LAG_LAGbI4
05.05.2016 15:13Я вот не понимаю, что мешает сделать такую же систему, как в винде. Диск С, диск Д, сам выбираешь куда что устанавливать.
denticulus
09.05.2016 20:37Когда было установлено 20+ приложений на карту, ресурса флеша хватало на 1-2 месяца. При этом тормоза были страшные. Transcend Premium UHS-I 32 и 64 Гб. Три карты поменял, забил, коплю на новый телефон.
en1gma
да ну нафиг…
по моему опыту, самое удобное распределение таково:
/data отдельным разделом на нанд/еммс;
/cache симлинк на папку /data/cache (да, я в курсе, что гугол объявил /cache устаревшей, осталось вендорам soc это услышать и выпилить из bsp);
/sdcard или симлинк на на папку /data/sdcard или симлинк на внешнюю карточку (с путём, зависимым от вендора soc и от версии андроида) в зависимости от настройки пользователем.
тот сон разума, что на текущем sgn3 на а5.0 — нет, спасибо… а описанный — так вообще…
maximfilin
Ну симлинк тоже не самое идеальное решение, хотя работает в большинстве случаев. Тут больше всего вопросов вызывает невозможность расшифровать карту памяти если сброс уже случился.