В самых первых версиях 1.5-1.6 карте памяти была отведена скромная роль хранилища для медиа контента, и ни о какой возможности переноса туда части системы или приложений даже речи не шло. Шло время, магазин приложений рос по экспоненте, и стало очевидно, что объем ПЗУ в устройствах стал явно маловат, и тогда в 2010 году вместе с выходом Android 2.2 Froyo пользователям дали заветную возможность переносить приложения на карту памяти.
Для полного понимания сути процесса переноса необходимо уточнить, что приложения могут быть построены двумя разными способами. Первый предполагает, что приложение и data являются одним целым. Такой подход, как правило, используется в большинстве программ. Во втором действует принцип «приложение отдельно — данные отдельно». Это как раз сделано для игр и сервисов доступа к контенту с разного рода защитой по подписке, когда при размере в 100 мегабайт данные в виде текстур или ресурсов могут занимать до нескольких гигабайт.
Так в 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
Ну симлинк тоже не самое идеальное решение, хотя работает в большинстве случаев. Тут больше всего вопросов вызывает невозможность расшифровать карту памяти если сброс уже случился.