@denisk0n
Creative technology

Какие практики популярны при создании Lite & Pro версии приложения?

Доброе утро!
Собственно сабж.

Например планирую в ближайшее время выпустить приложение(android).
Подумываю о 2х версиях: Pro - платная, Lite - реклама + урезанный функционал.
Поделитесь опытом. Сейчас только на уме вести 3 ветки в репозитории master - основная ветка, и мержить в pro, lite.
Первая проблема которая приходит на ум: имена пакетов.

Спасибо.
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
@kaftanati
Инженер-энтузиаст
Вот более развернутый пример для различных приложений (на выходе два APK, два приложения в маркете):

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        //vectorDrawables.useSupportLibrary = true
    }

    signingConfigs {
        debug {
            storeFile file('***\\debug.keystore')
            keyAlias 'androiddebugkey'
            keyPassword 'android'
            storePassword 'android'
        }
    }

    productFlavors {

        pro {
            applicationId = "com.example.pro" as ProductFlavor
            applicationId 'com.example.pro'
            buildConfigField "boolean", "pro", 'true'

            ***

        }
        lite {
            applicationId = "com.example.lite" as ProductFlavor
            applicationId 'com.example.lite'
            buildConfigField "boolean", "pro", 'false'
            
            ***
        }
    }
    buildTypes {

        debug {

            buildConfigField "boolean", "debugBuild", 'true'

            ***
        }

        release {

            buildConfigField "boolean", "debugBuild", 'false'

            ***
        }

    }
}


Но порекомендую все же использовать IAP разблокировку (встроенные покупки) и глобальный ключик pro, по которому вкл/откл рекламу и функционал.

Во всяком случае - сразу используйте полноценные классы, никаких последующих сравнений/слияний. Плавали, знаем - извращение еще то.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
KuSu
@KuSu
Android разработчик
можно розделить на две версии вот так (в build.gradle)
productFlavors {
        PRO {
            applicationId "com.app.pro"
        }
        LITE {
            applicationId "com.app.lite"
        }
    }

и тогда в lite - держать обрезанную версию классов, а в pro дописывать в классы функционал.
Ответ написан
Комментировать
Rou1997
@Rou1997
Первая проблема которая приходит на ум: имена пакетов.

Обычно их разными делают, com.company.package и com.company.package.pro, заодно где надо в коде можно проверять Pro или нет по имени пакета, в том числе встречал "взломостойкие" реализации проверки имени пакета, правда, они были не в Java, а в JNI, поскольку Java и взломостойкость вообще не совместимые понятия, и скорее думать следует об этом, а не о репозиториях, реверс-инжиниринг сейчас конечно далеко не в пике развития, но для такой примитивной задачи как удаление рекламного SDK или иной "взлом" APK, найти человека не составляет большой проблемы, если ваше приложение того стоит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы