Приемлемое хранилище Android 6.0 Marshmallow — почему оно до сих пор использует внутреннюю память?

У меня есть карта MicroSD на 32 ГБ, используемая в качестве внутреннего хранилища в моем Moto X Play (XT1563), и я заметил, что некоторые приложения не полностью перемещаются во внешнее хранилище (в частности .obb, файлы), несмотря на то, что эта новая функция в Marshmallow предполагается делать:

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

из: https://source.android.com/devices/storage/adoptable.html

Сайт Motorola более конкретен:

Как только карта будет отформатирована как внутреннее хранилище, внутреннее хранилище вашего устройства и карта будут отображаться как «хранилище устройства» в настройках хранилища, и вы сможете перемещать приложения, которые находились во внутренней памяти, на карту. Перемещение приложения, его медиафайлов, obb файлов и данных на карту. Переместить приложения на карту можно из настроек приложений (настройки->приложения->выбрать приложение->изменить место хранения)

по адресу: https://motorola-global-portal.custhelp.com/app/answers/prod_answer_detail/a_id/ 109134/стр/1449,9582

Например, я переместил Mortal Kombat X (~ 1,3 ГБ) на SD-карту, и большая часть ее данных находится в .obbфайле, находящемся во внутренней памяти в формате /data.

Это не имеет смысла, потому что в приложении AndroidManifest.xmlразработчик должен указать android:installLocationатрибут манифеста, чтобы приложению даже было разрешено перемещаться на внешнюю SD-карту. Но в этом случае это не имеет значения, так как Android видит SD-карту как внутреннюю память , поэтому при ее установке не должно возникнуть никаких проблем.

Почему мое внутреннее хранилище все еще используется?

Как именно вы перемещаете приложения (игры) с внутренней на внешнюю SD-карту ..?
Я использовал собственный метод Android app2sd — «Изменить хранилище» на странице информации о приложении.
But in this case, it wouldn't matter since the SD card is seen by Android as if it were internal storage so it shouldn't have any issues installing there.-- Вам нужно прочитать полную страницу Google, на которую вы ссылаетесь: «Приложения могут быть размещены на принятых носителях только в том случае, если разработчик указал поддержку через атрибут android: installLocation». Android знает о разнице между «настоящим» внутренним хранилищем и адаптируемым хранилищем.
Интересно: предпочтительна ли внутренняя память, пока в ней еще есть место? Я имею в виду: разработчики Android знают, что все интерфейсы к любой SD-карте будут замедлять чтение/запись данных, по крайней мере, немного, поэтому может быть задумано, что внутреннее хранилище используется везде, где это возможно, если вы фактически не перемещаете данные на SD-карта или внутренняя память переполнены.

Ответы (1)

Как упоминалось в комментариях к вопросу, это сделано по замыслу.

Согласно документам :

Приложения можно размещать на принятых носителях только в том случае, если разработчик указал поддержку через атрибут android:installLocation. Новые установки поддерживаемых приложений автоматически размещаются на устройстве хранения с наибольшим количеством свободного места, и пользователи могут перемещать поддерживаемые приложения между устройствами хранения в приложении «Настройки».

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

Подробнее см. здесь: https://www.reddit.com/r/GalaxyS7/comments/5qi1mj/with_nougat_now_we_can_finally_transfer_90_of_the/