2015-07-06 4 views
1

У меня есть 2 варианта приложения - Free и Pro (flavors). Теперь я добавил некоторые дополнительные функции для версии Pro. Какова безопасность и надлежащий способ сделать ее функциональность недоступной для бесплатной версии? Например, если я просто удалю несколько кнопок на «Свободный» макет - это enouth или я должен переопределить весь код Java, чтобы он не включался в свободную версию? Возможно ли, что если кто-то «взломает» бесплатное приложение и вернет ему макет из версии Pro? Поиск не искал результат. Спасибо.
Безопасный способ удалить функциональность из Android-приложения

UPD: Чтобы быть ясным, этот вопрос касается не продуктов, а градиентной системы - я знаю основную информацию об этом. Этот вопрос о том, можно ли взломать приложение, просто заменив в скомпилированном apk некоторые переменные, такие как логическая переменная или строка (и сделайте это «Pro»). Например, замените в некоторых местах «false» на «true» и получите версию Pro с полной функциональностью. Я ничего не знаю об этом, но по какой-то причине я думаю, что это возможно (потому что это java, я думаю). Извините за мой английский.

ответ

0

Я бы два ароматизаторов отдельные модули на Android Studio.

В вашем случае, например, у вас есть активность (с ее расположением) MyActivity.java имеет про и бесплатную версию. В версии Pro есть кнопки дерева, а у бесплатного - только два.

Итак, вы можете иметь MyActivity.java внутри основного модуля, но у вас будет два файла для макета, один внутри про-модуля (этот макет будет содержать три кнопки), а другой внутри свободного модуля (это, с другой стороны, будет содержать только две кнопки).

Внутри MyActivity.Java-код, вы можете отличить, что используете свободный или профессиональный вкус и выполняете все условия.

Другой вариант состоит в том, чтобы иметь две оболочки MyActivity.java (по одному на каждый ароматический модуль) с соответствующей реализацией.

+0

Да, это то, что я делаю сейчас - разная компоновка для каждого аромата. Это проще и не дублирует Java-код (например, 2 Деятельность). Но я напугана i f кто-то вернет мои кнопки в бесплатной версии. Является ли это возможным? Я не знаю enything о взломе приложений Android. Теперь я начинаю думать, что это вопросы для приложения хакеров для хакеров (для хакеров), но не для stackoverflow :-) Извините, если я зря теряю время ... – kolombo

+1

@kolombo вам не стоит беспокоиться об этом, см. [Сборка системы концепции] (http://tools.android.com/tech-docs/new-build-system/build-system-concepts) «Исходный код вкуса продукта используется в дополнение к исходному коду основной конфигурации» Если вы измените ароматы с помощью AS, вы увидите, что не выбранный вкус полностью игнорируется. Хотя вам нужно будет использовать proguard, если вас беспокоит обратная инженерия, применяемая к вашему приложению. – mmark

+0

Спасибо за ваш ответ. Теперь я буду отделять функциональность самым простым способом для меня и не беспокоюсь об этом. Скорее всего, у меня просто паранойя). Спасибо за ссылку, я ее прочту. Это сэкономит мое время. – kolombo

0

Я полагаю, вы используете Android Studio для разработки? Вы можете сконфигурировать файл сборки классов, чтобы создать два разных варианта вашего приложения. Посмотрите на documentation для подробного описания, как это сделать.

+0

Да, я использую Android Studio и ароматы, но теперь я думаю о том, чтобы сделать приложение недоступным и в то же время сделать deleloping более простым и быстрым, чем мне нужно разделить функциональность между двумя версиями приложений. – kolombo

2

два варианта:

  1. Если у Вас есть серверный компонент, вы можете иметь функцию регистрации и пусть сервер сообщает приложение пользователю разрешено ли использовать Pro версию или нет.

  2. Рекомендованным способом является покупка приложений. Goole предоставил api для этого же, и вы можете проверить детали с помощью Google In App Purchase SDK. Исходя из этого, вы можете включить функцию pro.

https://developer.android.com/google/play/billing/index.html

+0

Да, я думал о inAppPurchase для большинства сафаритов. Но теперь его поздно реализовать, потому что у меня уже есть 2 приложения на рынке, и если бы я его реализовал раньше, он будет удалять Объявления из приложения и предоставлять дополнительные функции. Но теперь я думаю, что он опаздывает :(У меня есть внешний сервер для проверки регистрации, теперь я использую только лицензирование проверки подлинности по умолчанию для версии Pro. InAppPurchase, по-видимому, лучший способ для него. Извините за английский – kolombo

2

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

Возможно, достаточно поля BuildConfig. Вы можете создать его в Gradle файла:

productFlavors { 
    pro { 
     buildConfigField "boolean", "PRO", "true" 
    } 

и доступ к нему через

BuildConfig.PRO 

Другим способом получить доступ к аромату как:

BuildConfig.FLAVOR.equals("pro") 
+0

Oh. 't знаю, что (доступ к ароматам). И если я просто проверяю« дополнительные »функции, например if (BuildConfig.PRO) {return;} - это будет enouth для приложения« неуязвимо »для хакеров? возможно ли извлечь apk и заменить или удалить эту проверку? – kolombo

+0

Конечно, есть способы уладить поведение приложения. Кто-то должен декомпилировать его, изменить конкретный код и скомпилировать его снова. Но количество пользователей, которые получили эти возможности может быть очень низким. Самый безопасный способ - аутентифицировать пользователя через backenend. – elcolto

Смежные вопросы