Как перенести приложение на 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-карты. Если места не хватает — сотрите лишнее.

Источник материала
Настоящий материал самостоятельно опубликован в нашем сообществе пользователем Proper на основании действующей редакции Пользовательского Соглашения. Если вы считаете, что такая публикация нарушает ваши авторские и/или смежные права, вам необходимо сообщить об этом администрации сайта на EMAIL abuse@newru.org с указанием адреса (URL) страницы, содержащей спорный материал. Нарушение будет в кратчайшие сроки устранено, виновные наказаны.

Комментарии

комментариев 16

  1. Proper:

    Народ плакался, что при подключении SD-карты обычным образом, как в прежних андроидах, и выборе опции «диск для записи по умолчанию» — SD-карта, файлы иногда всё равно пишутся в основную память.

    Это потому, что при выборе обычного режима подключение SD-карты периодически слетает (из-за экономии батареи), вот файлы и пишутся в основную память.

    При подключении так, как расписано в статье — всё работает.

    • demch:

      Только я не понял, как этот особый режим включить. У меня Андроид 7.1.2N2G47H. Вставил память на 32 и выбрал все фото, темы, резервное копирование, галерея и музыка ставить на флешку. Других настроек я не нашел.

      • Proper:

        Еще раз внимательно читаем материал на источнике. Там даже картинки есть.

        • demch:

          Спасибо. Нашел где собака порылась. Все должно начаться после перехода на форматирование СД-ки. Сохраню контакты и попробую. Спасибо за информацию.

  2. Proper:

    Надо отметить, что введение Adoptable Storage — очень грамотный вариант. Раньше народ мучился, делал аналог руками — форматил флэшку в Ext3 формат, потом правил конфиг, чтобы подкючить как системную память, и ты ды. И вот гугель наконец-то ввел это в систему, и логика работы сделана довольно разумная.

  3. Mikhail:

    Странно, я просто отформатировал SD-карту и все. Но в Настройках/Приложения почти у каждого приложения есть пункт «Перенести на SD». ОС 5й версии.

    • Proper:

      Это пятерка с ядром от четверки. У китайцев таких сборок одно время было много.

      Определяется очень просто — в ядре четверки нет SELinux. Потому что если оно есть — никакого «перенести на SD» с некриптованной FS (обычно для SELinux надо Ext3 или Ext4) быть не может.

      Косвенно настоящую пятерку (лоллипоп) можно отличить от как-бы-пятерки со старым ядром по наличию Bluetooth Low Energy и вирутальной машины ART. А также по месту управления разрешением оповещений от приложений — если управление ими сводится к галочке «разрешить оповещения» в свойствах приложения, то это ядрышко от четверки со старым механизмом контроля. А вот если для управления имеется отдельная закладка в настройках ОС, и кроме простого разрешить-запретить имеется более тонкий контроль (типа «разрешить только важные» и «разрешить только в определенных профилях») — это с высокой вероятностью ядро пятерки.

  4. Kokunov:

    А у меня никак не появляется вожделенное «Внутренняя память». Только это «Форматирование». Как сделать?
    Андроид 7.1.1

    • Proper:

      Попробуйте с SD-картой небольшого размера.

      Я столкнулся с невозможностью подмонтировать SD как внутреннюю память у товарища, который так пытался подмонтировать SD на 256 гигов. Взял карту поменьше — и все получилось.

      Смысл — система имеет ограничение на размер, то ли суммарной памяти, то ли на создание раздела на SD. В логах там будет что-то вроде

      Error: java.lang.IllegalStateException: command ’86 volume format private:179,67 auto’ failed with ‘null’

      Выяснять размер этого ограничения мне было влом. У меня карт больше 32 гигов нету, а с ними это работает везде (вон у M9 памяти якобы 64 гига и так, я добавил 32 гига — стало типа 96, на самом деле меньше, но то такое — другими словами, следует ожидать, что SD на 64 гига должны тоже монтироваться нормально, а вот больше я бы не поручился — не случайно у подавляющего большинства планшетов и смартов на Андроиде встроенная память 64 гига макс).

      • Kokunov:

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

        • Kokunov:

          Загрузил я себе ADB и на команду sm has-adoptable эта скотина мне ответила false
          Команду sm partition disk:179,65 private игнорирует

        • Proper:

          Это достаточно логично, но вот официального признания от производителей в блокировке ими Adoptable Storage на 6 и 7 андроидах я пока не видел, а то, что пишут там всякие клоуны в сети — это их личные фантазии. Они вон в 7-й андроид суют всякие App2SD и прочее гугно и возмущаются, отчего ничего не выходит — делают рут, вплоть до окирпичивания девайса, но упорно долбятся в давно закрытую дверь.

          Между прочим, форматнуть флэшку в Ext3 вы можете на компе. Потом воткните ее в аппарат и посмотрите, что он скажет. Также форматнуть флэшку в Ext3 должно быть возможно из загрузчика вашего аппарата — если его не обрезали по самое немогу. Ну и, наконец, Partition Toolkit для андроида никто не отменял.

          • Kokunov:

            У меня Самсунг гелекси j5 . Похоже там кака. У них даже нет настроек sd карты в меню

            • Kokunov:

              Короче, похоже для новых самсунгов серии a или j есть только такой вариант:
              https://goo.gl/EDdEpF
              Обязательно прочитать (на второй странице) про отключение проверки zip сигнатуры(целостности) в TWRP перед применением скрипта.

            • Proper:

              Самсунг стал воображать себя слишком великим.

              Знаешь, есть такой анекдот:

              CEO компании Apple публично признался что он гей.
              На следующий день CEO компании Самсунг заявил, что он тоже гей, но еще и водонепроницаемый.

              Ср@ть на пользователей — это фишка Apple. Ну вот теперь и эту их фичу освоили в Самсунге.

              Но теперь ты должен лучше понять, почему пользователи так ценят смартфоны с ЧИСТЫМ андроидом. Без всяких сторонних аппов и лончеров, без кастомизации — чтобы вот как Гугель дает дистрибутив, так и стояло.

              Вот, например, Xiaomi Mi A1. Неспроста фирма, имеющая дохрена собственного пафоса, выпустила смарт на чистом андроиде. Без всего этого партнерского дерьма. Потому что люди хотят.

              • Kokunov:

                За пафос надо платить… Похоже я заплатил, гггггг
                ЗЫ завтра придется рутить телефон, потом этот патч ставить.
                Вот только мне интересно, что будет, если самсунг опять какое нить обновление накатит? Великие шансы есть что все сломается. Иба как выше вы уже сказали — хочешь красиво жить — покупай телефон с большой встроенной памятью. Аминь, бгггг