Как перенести приложение на SD карту
Этот вопрос периодически терзает обладателей смартфонов и планшетов на ОС Андроид, у которых кончается место во внутренней памяти. Обладателей яблочных огрызков сей вопрос не терзает — потому что преподобный патер Джобс лишил их дьявольского искушения SD-картами, просто не предусмотрев в своих устройствах слота под это греховное расширение. Покупайте ойфон с большей памятью и сливайте файлы в ябло-облако — вот что завещал патер Джобс своей пастве.
Но мы, приверженцы зеленых роботов, согласно заветам товарища Сухова предпочитаем сначала помучаться.
В старых андроидах была такая приблуда — App2SD. Она позволяла переносить некоторые (не все) приложения (или часть файлов этих приложений) на SD карту. Потом таких приблуд стало много, а потом в Андроиде 4.2.2 и выше такой функционал появился уже в самой системе.
Появился — и пропал (уже в некоторых сборках Андроид 4.4 его стали выкидывать). Потому что конфликтовал с безопасностью данных и устойчивостью системы.
Он ушел — но обещал вернуться
И таки да — в Android 6.0 и выше появился принципиально иной способ работы с внешней картой памяти. Это так называемая модель Adoptable Storage, она позволяет использовать карту памяти как часть внутреннего хранилища.
В Андроиде версии 7 эта модель Adoptable Storage подверглась дальнейшим усовершенствованиям. Как это работает — я покажу на примере пресловутого китайского планшета Waywalkers M9 (для которого расширение основной памяти чрезвычайно актуально, потому что на самом деле он имеет встроенную Flash-память всего 12 гигабайт, хотя и пишет, что 64 гигабайта).
Если вкратце — теперь при подключении SD-карты имеется выбор, подключить карту как обычную съемную, или в особом режиме расширения внутренней памяти. В особом режиме карта форматируется особым образом и криптуется — так что читаться вне устройства она уже не будет. Зато хранилище вашего устройства станет выглядеть вот так:
Круть крутецкая наикрутейшая. Собственно, линуксоиды знают такой фокус — когда два диска сращиваются корнями. Здесь сделано аналогично — для приложений всё это видится как один общий накопитель. Подробности вы можете почитать по ссылочке на источник.
После особого форматирования и криптования карты система задаcт вам вопрос:
Конечно же, вы выберете «перенести сейчас». И внимание — начиная с этого момента работа вашего устройства изменится. Вы больше не сможете ничего писать во внутреннюю память устройства — при подключении устройства через USB к компьютеру вы будете видеть в проводнике только SD-карту, и все файлы ваше устройство будет сохранять тоже на SD-карту (это касается и фотографий, и видео, которые вы снимаете встроенной камерой, и даже файлов, которые вы скачиваете из Интернета через браузер или другие программы). Более того — теперь в системном проводнике вы будете видеть тоже только SD-карту. Ну потому что зачем вам лазать во внутреннюю память?
Видите — пункт «диск для записи по умолчанию» имеет единственный выбор, и этот выбор — SD-карта.
Зато теперь в настройках несистемных (то есть загруженных вами) приложений появился пункт «Хранилище», в котором указано, сколько места заняло приложение со своими данными, и в какой части хранилища. Если ткнуть пальцем в этот пункт — вам откроются зияющие глубины работы с памятью и ужасные кнопки «стереть данные» и «очистить кэш». Но главное — в самом верху будет таинственная кнопка «Изменить«. Не показывайте ее своей жене (или мужу), а скорее нажимайте. И о чудо — откроется панелька «Что использовать», в которой будет выбор из двух пунктов — «Внутренний общий накопитель» и «SD-карта». Выбираем нужное — и приложение волшебным образом переносится, совсем как в старые добрые времена Android 4.2.2.
Разница состоит в том, что теперь для системы оба накопителя — внутренний и внешний — объединены в общее файловое пространство, и внешний накопитель зашифрован так же, как и внутренний, так что вне устройства вы не сможете прочесть ничего из того, что на нем записано. Ну, то есть по идее так должно быть.
Соответственно теперь нет смысла снимать SD-карту с вашего устройства — она срослась с ним. Зато у вас как бы стало много памяти.
Существует и обратный способ — интеллигентно отсоединить SD-карту от вашего устройства, чтобы ничего не потерять. Но чтобы этот процесс прошел — надо, чтобы у вас на внутреннем накопителе было достаточно места для переноса всех файлов с SD-карты. Если места не хватает — сотрите лишнее.

