Нужно ли мне защищать приложение Android от копирования?

Нужно ли мне защищать приложение для Android (загруженное из Google Play Store) от копирования? Я следую ссылкам на документы, которые говорят о конфликтующих вещах.

Если я искал "шифрование приложения" с помощью справки консоли разработчика Google Play, он показывает мне "Служба лицензирования Google Play" , которая заканчивается

Обратите внимание, что начиная с выпуска JellyBean ОС Android, все приложения, оплачиваемые и бесплатные, зашифрованы по умолчанию и, следовательно, не требуют дополнительной защиты от несанкционированного копирования таких как Сервер лицензирования Google.

'Фильтры в Google Play:

Google Play больше не поддерживает функцию защиты от копирования в Консоль разработчика...

и предоставляет ссылку на Замена для защиты от копирования. Это ссылка на 'Настройка для лицензирования, которая ссылается на Добавление лицензирования к вашему приложению, который ссылается на "Часто задаваемые вопросы по лицензированию рынка", в котором отображается " "Служба лицензирования Google Play" (с приведенным выше текстом, который указывает, что приложения, созданные после Jellybean, зашифрованы). Итак, если я не понимаю, это противоречит самому себе.

Судя по дате других сообщений по этой теме, я предполагаю, что мне нужно сделать свою собственную защиту приложений, используя Лицензионный лицензионный лак на рынке Google (лицензионная библиотека лицензирования). Тем не менее, есть признаки того, что это не лучшее в настоящее время решение (например, пример приложения Market Licensing выглядит устаревшим, несколько недавних сообщений на форуме об использовании его, без классов udacity.com, которые я мог найти при его использовании). Поэтому я подумал, что сначала поможет получить окончательный ответ.

Ответы

Ответ 1

Во-первых, вы не можете защитить свой код на 100%. Но вы можете сделать работу хакера достаточно жесткой. Существуют некоторые методы защиты вашего кода защитить приложение для Android. Я рекомендую вам увидеть инструмент proguard.

ProGuard - это бесплатный инструмент для сжатия файлов Java, оптимизатор, обфускатор и преверизатор. Он обнаруживает и удаляет неиспользуемые классы, поля, методы и атрибуты. Он оптимизирует байт-код и удаляет неиспользуемые инструкции. Он переименовывает остальные классы, поля и методы, используя короткие бессмысленные имена. Полученные приложения и библиотеки меньше, быстрее и немного лучше защищены от обратной инженерии.

Ответ 2

Если ваш APP предоставлял своего рода услугу, онлайн-игру (требуется сервер), вы можете просто защитить свою службу с помощью некоторого правила регистрации/авторизации.

Или, если ваш APP был инструментом, автономной игрой, на самом деле это трудно защитить. Существует некоторый веб-сайт, предоставляющий услугу, которая позволяет пользователю напрямую загружать APK файл из GooglePlay и без какой-либо покупки. Любой может установить эти APK, просто разрешив установку APP из источника, отличного от GooglePlay. В этом случае вам нужно каким-то образом защитить APP от копирования.

Ответ 3

Рассмотрев обратную связь к этому сообщению (спасибо), я считаю, что ответ "нет", мне не нужно защищать мое приложение от копирования, поскольку сомнительная выгода не оправдывала бы усилия (объяснение объяснялось ниже). Однако этот ответ основан на приложении, которое я сейчас разрабатываю, и не будет применяться ко всем.

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

Если я интегрирую лицензионный лак на рынке Google, это затруднит пиратство приложения. Тем не менее, с достаточными усилиями, это может быть обратное преобразование в исходный код (даже со мной с помощью Proguard), функциональность LVL может быть устранена, а приложение перестроено. Кроме того, интеграция LVL - это значительное усилие (для меня, по крайней мере), оно рискует ввести ошибки в приложение, и я не убежден, является ли это хорошим решением (пример приложения для лицензирования рынка выглядит устаревшим, несколько недавних сообщений на форуме на его использовании,...). Следовательно, я не думаю, что усилия и риск оправданы.

Если у приложения была высокая цена продажи, мой ответ, вероятно, был бы другим, и я бы рассмотрел другие варианты. Например, можно было бы интегрировать лицензию на маркетинг в Google Market LVL, но это не устранило бы риск пиратства полностью, если бы Android не обеспечивал безопасное шифрование приложений. Шифрование приложения кажется для меня большой проблемой (учитывая, например, что ее нужно дешифровать в какой-то момент для ее запуска), что может объяснить, почему шифрование приложения после Jellybean было удалено (если оно было удалено). Я мог бы также переместить функциональность на серверную - для меня это кажется самой безопасной стратегией, хотя было бы дорого развиваться и требовать, чтобы серверная сторона управлялась и поддерживалась в будущем.

Вероятно, есть аспекты этого, которые я не рассматривал. Прокомментируйте, если вы не согласны с моим ответом или имеете другие мысли.