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

29

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

Благодарность

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

Ответы:

33

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

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

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

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

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

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


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

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

Это не может быть изменено! Вот как работает Android.

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

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

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

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

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

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

$ su
# pm get-install-location
0[auto]
# pm set-install-location 2
# pm get-install-location
2[external]
Abhilash
источник
2
интересно, но вы должны иметь рут, чтобы это работало
Роберт С. Барнс
-2

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

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

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

Vibhor
источник
2
По данным Android Version Market Share 2016, 97,7% всех пользователей Android используют Android 4.0 или более позднюю версию на дату публикации этого ответа, поэтому Lucky Patcher может привести к необратимым изменениям практически у всех текущих пользователей Android.
Карел
2
Какие бы это были "необратимые изменения"? Я не заметил их на своих устройствах Kitkat :) Но, как заметил @karel: Если вы считаете, что его не следует использовать, почему вы рекомендуете его?
Иззи