Как я могу переместить приложения на SD в непринятом хранилище Marshmallow?

Все, кажется, в восторге от функции адаптивного хранилища Marshmallow, но мне это кажется серьезным регрессом. Причин отказа от внешнего хранилища может быть несколько:

  1. При обновлении с Lollipop у меня уже есть SD-карта, полная всякой всячины. Таким образом, переформатирование и стирание всего, чтобы преобразовать его в приемлемое хранилище, является серьезным сдерживающим фактором. Это потребует переноса многих ГБ данных с устройства, переформатирования, а затем передачи их обратно, и я не уверен, как сделать это надежным образом и возможно ли это вообще, поскольку принятое хранилище, вероятно, хранит данные в различные пути.
  2. Моя SD-карта может быть слишком медленной, чтобы использовать ее в качестве расширения внутренней памяти.
  3. Я хочу иметь возможность использовать мою съемную SD-карту на других устройствах (например, быстро переносить огромные видеофайлы на ноутбук).

По этим причинам, если я не использую хранилище, AFAICS означает, что приложения могут храниться только во внутренней памяти. А поскольку у меня много приложений, это означает, что после обновления Marshmallow мое устройство регулярно почти полностью заполнено, что приводит к сбою многих функций.

Так неужели на Marshmallow действительно нельзя переместить приложения на непринятое внешнее SD-хранилище? Если да, есть ли у меня альтернатива, кроме удаления приложений для освобождения места или перехода на Lollipop? В противном случае это было бы очень разочаровывающим и означало бы, что Google действительно недостаточно тщательно подумал, прежде чем предоставлять эту функцию.

Сэм Лиддикотт предлагает лучшую альтернативу, которую я нашел: разделение SD-карты на разделы. Дополнительная информация в его ответе на другой вопрос
Спасибо - на самом деле я уже пришел к такому же выводу, но потом застрял в выяснении, насколько большим должен быть раздел !

Ответы (2)

Ты прав. Android Marshmallow покончил с приложениями, хранящимися на SD-карте, когда она настроена как портативное хранилище. Единственный способ использовать его таким образом — это использовать root и такие приложения, как LINK2SD.

Ах, спасибо! Я не знал о LINK2SD и apps2sd. Тем не менее, кажется, трудно найти окончательную процедуру их использования на Marshmallow.

Внутреннее хранилище Marshmallow лучше использовать с SD-картой смешанного формата, как я также объясняю в своем блоге здесь :

http://blog.sam.liddicott.com/2016/02/android-6-semi-adopted-storage.html

Во-первых, вам нужно, чтобы adb работал.

  1. Вставьте SD-карту и отформатируйте ее как переносную.
  2. Извлеките SD-карту из меню «Хранилище и USB».
  3. Используйте «оболочку adb», чтобы указать доступное хранилище:

как это

$ adb shell sm list-disks adoptable

disk:179_64

disk:179_64 - это моя SD-карта, которую можно использовать, я хочу, чтобы 75% использовалась как внешняя SD:

$ adb shell sm partition disk:179_64 mixed 75

Примечание. Ваша карта может быть указана с запятой вместо подчеркивания, например, disk:179,64 , и в этом случае вы вводите следующее:

$ adb shell sm partition disk:179,64 mixed 75
  1. Это удалит всю SD-карту, предоставив 75% в качестве переносного хранилища, а остальное - в качестве внутреннего хранилища.

  2. Перезагрузите телефон.

  3. В меню «Хранилище и USB» выберите SD-карту (внутреннюю) и выберите «Перенести данные» (чтобы приложения, где это возможно, были установлены там).

  4. В разделе «Хранилище и USB» переименуйте принятое хранилище, чтобы оно имело какое-то имя, например « Принято », в противном случае, если оно имеет то же имя, что и раздел внешнего хранилища, представление USB MTP может отображать только внутреннее

Теперь у вас есть хранилище, которое может принимать приложения, позволяющие «перемещаться на SD», а также SD-карту, на которой вы можете хранить фильмы Plex, музыку из Google Play, фотографии и т. д.

Спасибо @fernio, который подсказал мне опубликовать здесь.

Спасибо - я уже видел ваш подход в соответствии с комментариями к исходному вопросу. Однако мне совершенно не ясно, имеет ли смысл этот подход в моем случае: 1) Как мне определить размеры разделов? Ваше разделение 75%/25% звучит совершенно произвольно. 2) Что делать, если у меня не осталось свободного места для создания раздела нужного размера? 3) Что именно будет храниться в обычном хранилище, а что в портативном? В частности, откуда вы знаете, куда пойдут важные вещи, такие как видео/фотографии с камеры, музыка/видео из Google Play, офлайн-музыка Spotify и т. д.?
@AdamSpiers, что касается номера 3, любое приложение, которое предлагает хранить данные на SD-карте (например, Spotify), увидит портативный раздел как вашу SD-карту.
Размер разделов произвольный. На карте 32G 25% для усыновленных — это щедро. Разделение сотрет вашу карту, чтобы у вас было достаточно свободного места :-) и по опыту я знаю, что такие приложения, как воспроизведение музыки, камера, Plex, которые могут храниться на SD, по-прежнему будут иметь возможность хранить на переносном устройстве. В противном случае приложения могут храниться во внутренней или принятой папке, в зависимости от того, куда вы переносите данные, в противном случае они будут храниться там, где установлено приложение.
После выполнения последней команды я столкнулся с этой ошибкой: Ошибка: java.lang.IllegalStateException: java.util.concurrent.TimeoutException: Thread Binder_C прекратил ожидание partitionMixed после 180000 мс.
Для ошибки java убедитесь, что вы запускаете командную строку в adminрежиме
Удалось выполнить шаги с помощью эмулятора терминала непосредственно на рутированном телефоне, без использования подключения к телефону adb или usb : - Отформатируйте внутреннюю SD как переносную в настройках, нажмите «Извлечь (размонтировать)», открыл эмулятор терминала, я su(на всякий случай) стал root, затем sm list-disks adoptable, нашел мое хранилище 179_64, то sm partition disk:179_64 mixed 80. Он сразу начал работать. Игнорируется приглашение формата. Затем перезагрузился, и все запросы на форматирование исчезли.