Функциональность приложения для SD на Android

Я получаю все больше и больше запросов о возможности использования функции App to SD, которая должна быть частью Android 2.2, но у меня действительно нет опыта работы с ней. Я также не знаю, где найти какую-либо документацию о том, как сделать мои приложения совместимыми с этой функцией. Мне говорили, что мои приложения нельзя перенести на SD-карту.

Мой разум также говорит мне, что это действительно плохая идея для платных приложений, которые не имеют какой-либо лицензионной защиты.

Кто-нибудь имел какой-либо опыт с этим, знает какую-либо документацию или имеет какие-либо советы относительно того, что может помешать приложению быть совместимым с этой функцией?

Примечание. Я не использую защиту от копирования в своих приложениях.


person Ben Mc    schedule 10.09.2010    source источник


Ответы (2)


Вы можете разрешить установку своего приложения на SD-карту, используя атрибут манифеста android:installLocation. Это может быть установлено на preferExternal или auto, в зависимости от того, хотите ли вы порекомендовать установить его на SD-карту или просто разрешить это. По умолчанию приложения не могут быть установлены на SD-карту из соображений обратной совместимости, поэтому вы должны включить эту функцию, если хотите, чтобы ваши пользователи могли ее использовать.

Из документации:

Когда ваше приложение установлено на внешнем хранилище:

  • Пока внешнее хранилище подключено к устройству, это не влияет на производительность приложения.
  • Файл .apk сохраняется во внешнем хранилище, но все личные пользовательские данные, базы данных, оптимизированные файлы .dex и извлеченный собственный код сохраняются во внутренней памяти устройства.
  • Уникальный контейнер, в котором хранится ваше приложение, зашифрован случайно сгенерированным ключом, который может быть расшифрован только тем устройством, на котором оно изначально установлено. Таким образом, приложение, установленное на SD-карту, работает только для одного устройства.
  • Пользователь может переместить свое приложение во внутреннюю память через системные настройки.

Таким образом, вам не стоит слишком беспокоиться о защите лицензии; в эту функцию встроено шифрование. Вам также обычно не следует беспокоиться о защите лицензии, потому что любая форма защиты от копирования или DRM, как правило, более вредна для честных пользователей, чем для пиратов. Пока кто-то может использовать ваше приложение, кто-то сможет его пиратить; практически невозможно создать нерушимую схему DRM. Если ваше приложение уже находится во внутренней памяти, скорее всего, оно уже пиратское. Однако большинство пользователей честны и купят приложение в Маркете, так что вы не сильно выиграете от борьбы с пиратством (большинство людей, загружающих пиратские приложения, — это те, у кого нет доступа к платным приложениям в Маркете; по-прежнему недоступен во многих странах).

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

person Brian Campbell    schedule 10.09.2010
comment
Спасибо, это именно то, что я искал, но нужно ли компилировать приложение с Android 2.2 в Eclipse? Могу ли я по-прежнему установить minSDKVersion на 3 с этим параметром, и пользователи 1.5 все еще могут установить? - person Ben Mc; 12.09.2010

Пожалуйста.

И задокументировано здесь.

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

Разработчики приложений могут указать предпочтительное место установки для своих приложений с помощью нового атрибута в файле манифеста, android:installLocation. Атрибут поддерживает три значения: "internalOnly", "preferExternal" и "auto". Во время установки система проверяет значение android:installLocation и устанавливает приложение .apk в соответствии с предпочтительным расположением, если это возможно. Если приложение запросило внешнюю установку, система устанавливает его в частный зашифрованный раздел на внешнем носителе. После того, как приложение .apk установлено извне, система позволяет пользователю изменить место хранения .apk и при необходимости переместить его во внутреннюю память устройства (и наоборот) через «Управление приложениями» в пользовательских настройках.

По умолчанию система устанавливает все приложения во внутреннюю память устройства, кроме тех, которые явно запрашивают внешнюю установку. Это означает, что система всегда будет устанавливать устаревшие приложения во внутреннюю память, поскольку у них нет доступа к атрибуту android:installLocation. Однако можно настроить и скомпилировать устаревшее приложение таким образом, чтобы оно устанавливалось внутри на более старых версиях платформы и при необходимости извне на платформах Android 2.2 и более поздних версиях.

Обратите внимание, что запрос на установку на внешний носитель устройства подходит не для всех приложений, особенно потому, что внешний носитель может быть съемным, а отключение/повторное подключение может нарушить работу пользователя и настройки системы.

Для получения дополнительной информации о настройке предпочтительного места установки для вашего приложения, включая обсуждение того, какие типы приложений должны и не должны запрашивать внешнюю установку, прочитайте документ Место установки приложения. Документ Место установки.

person Serapth    schedule 10.09.2010