Установка на SDCard по умолчанию

Я хотел бы знать, есть ли способ сказать Android устанавливать приложения на карту micro SD по умолчанию вместо того, чтобы сначала загружать приложения во внутреннюю память, а затем перемещать их на SD-карту вручную.

Спасибо

специально из-за ответа @Yeradis android.stackexchange.com/a/4976/156
@GAThrawn Нет, это не обман. Вопрос, который вы связали, скорее, «можно ли перемещать приложения на SD». Это «как указать место установки по умолчанию». Та же улица, другой дом.

Ответы (5)

В этой статье на HowtoGeek описывается возможный способ использования :

Эта команда установит цель установки устройства по умолчанию на вашу SDCard. Это не обязательно означает, что все будет установлено там: туда будут помещены только приложения, поддерживающие это, и разработчики могут «отменить» это в манифесте своих приложений, если они сочтут это необходимым. Из связанной ссылки API :

Изменяет место установки по умолчанию. Значения местоположения:

  • 0: Авто — позволить системе выбрать наилучшее местоположение.
  • 1: Internal — установить на внутреннюю память устройства.
  • 2: External — установить на внешний носитель.

Примечание. Это предназначено только для отладки; использование этого может привести к сбою приложений и другому нежелательному поведению.

Для получения более подробной информации об ADB и о том, как вы можете, например, установить его минимальную версию на свой компьютер (без излишней установки всего SDK), вы можете взглянуть на tag-wiki .


Обновление: чтобы избежать путаницы с ответом t0mm13b , некоторая ясность в процессе установки:

  1. вы нашли какое-то приложение в и решили его установить
  2. после того, как вы нажали «установить» и согласились с условиями/разрешениями, загружается в/data/local , то есть в ваше . Вы не можете изменить это.
  3. когда загрузка будет завершена, .apkон будет установлен автоматически. Куда, зависит от нескольких вещей:
    • если разработчик не указал android:installLocationсвойство в своих приложениях Manifest, приложение будет установлено во внутреннюю историю. Точка, другого выбора нет (см. Справочник по API ).
    • если для этого android:installLocationпараметра установлено значение preferExternal, и доступно внешнее хранилище, оно будет отправлено туда.
    • если он установлен на auto, это снова зависит:
      1. содержит ли приложение виджеты, сервисы, хочет запускаться при загрузке и еще несколько вещей, оно уходит во внутреннюю память. Полная остановка, другого выхода нет.
      2. он идет туда, куда указывает «местоположение установки по умолчанию» устройств
может помочь включить предупреждение - его работа не гарантируется, особенно если приложение имеет свои собственные виджеты... :)
Как я уже писал: туда пойдут только приложения, поддерживающие это :) Виджеты, сервисы и т. д. говорят, что это не поддерживается :)
после выполнения команды adb shell pm setInstallLocation 2 ошибка: устройство не найдено
Похоже, вы либо пропустили первые два шага (включение отладки по USB и последующее подключение устройства), либо вы работаете в Windows и не установили соответствующие драйверы. Пожалуйста , перейдите по соответствующей ссылке и продолжайте, @moudrick.

Это нельзя изменить! Так работает Андроид.

Все загрузки из Google Play идут во внутреннюю файловую систему, затем из:

  • Настройки > Управление приложениями
  • Нажмите на указанное приложение, проверьте, включена ли кнопка «Переместить на SDCard », тогда вы можете это сделать.

Если кнопка « Переместить на SDCard» отключена или выделена серым цветом, это, вероятно, препятствует работе приложения, например, их собственных виджетов на главном экране.

Также см. этот ответ на соответствующей боковой панели справа от этой страницы. :)

Вы уверены, t0mm13b? Разве не было какой-то команды ADB adb shell pm setInstallLocation 2(например, SDCard), как описано здесь ?
Разработчик может указать это в манифесте, чтобы дать приложению возможность перемещаться на SDCard. android:installLocation="auto"Не видел adb shell pm setInstallLocation 2, предположительно вы указываете имя пакета в таком случае...
Нет, t0mm13b — см. мой ответ и связанную статью. Это задает место установки устройства по умолчанию. Так что, если Manifestнаписано "авто", то оно туда и идет. Если Manifestнаписано что-то другое, кроме "авто", оно идет туда, куда Manifestговорит. См. также: API ref , также здесь для команды pm set-install-location(новый синтаксис).
Иззи - то, что я указал в AndroidManifest, android:installLocation- на самом деле позволяет переместить на SDCard из настроек управления приложением ... некоторые разработчики не указывают это и отображают кнопку как отключенную, но я уступаю - никогда не видел, чтобы команда adb делала это.
А, теперь я понял - другой фокус: вы говорили, что «если приложение не предназначено для установки на SD, вы не можете этого сделать» - в то время как я сосредоточился на том, куда оно идет по умолчанию, если не указано иное . Но, пожалуйста, проверьте первые 4 строки вашего ответа, они говорят что-то другое. Однако вы правы: загрузка сначала идет в /data/local, а оттуда устанавливается приложение. Но в зависимости от настроек и манифеста он устанавливается либо во внутренний, либо непосредственно во внешний оттуда. // Если вам нравится обсуждать это подробно: вы помните наш паб, кхм, чат? :)

Установите «Эмулятор терминала для Android» на свой мобильный и откройте

$ su
# pm get-install-location
0[auto]
# pm set-install-location 2
# pm get-install-location
2[external]
интересно, но для этого нужен рут

Перейдите в «Управление приложениями», затем выберите вкладку «Все» и найдите «Google Play Store». Нажмите на него, а затем нажмите кнопку «Удалить обновления». После этого перейдите в Play Store, все приложения будут установлены на вашу SD-карту. Это то, что я сделал на своем QMobile A110 (Android 4.2).

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

Дело в том, что вы можете изменить каталог установки по умолчанию, если ваш телефон рутирован. Загрузите Lucky Patcher и нажмите на инструменты, там вы можете найти опцию для изменения каталога установки по умолчанию. ** Не делайте этого для Android 4 или выше, иначе это может привести к необратимым изменениям. **

Согласно Android Version Market Share 2016 , 97,7% всех пользователей Android используют Android 4.0 или более позднюю версию на дату публикации этого ответа, и поэтому Lucky Patcher может вызвать необратимые изменения почти у всех нынешних пользователей Android.
Что это за «необратимые изменения»? Я не заметил их на своих устройствах Kitkat :) Но, как заметил @karel: если вы считаете, что его не следует использовать, почему вы его рекомендуете?