Страницы

Поиск по вопросам

понедельник, 2 декабря 2019 г.

Изменения кода в бесплатной и платной версии приложения одновременно

#android


Есть приложение N, у него есть две версии - платная и бесплатная, у каждой версии
свой ИД и свой функционал.

Допустим, мне надо внести изменение в 5-7 классов, дополнить их чем-то и в той и
другой версии. 

Как лучше всего и удобнее это делать ?

п.с. сейчас я пишу в одной версии, потом копирую ручками в другую.
    


Ответы

Ответ 1



Используйте Flavors. Рецепт для Android Studio: Открываете File-Project Structure-Flavors. Там уже будет defaultConfig. Создаете два flavor'а: paid и free. Указываете для каждого из них свой ApplicationId. Остальные данные указывать не обязательно, они будут браться из defaultConfig'а (возможно могут отличаться signing config, тогда его тоже указать, а может и нет, зависит от вашего проекта). Теперь для каждого из flavor'а вы можете создать свои классы и ресурсы, они будут объединяться с имеющимся кодом (поверх). Файлы эти будут лежать рядом с main в директории src. Например: myproject app src main java res assets ... paid java res ... free res ... 2.1. Сама структура директорий не создается, придется это делать вручную. Хотя для ресурсов, например, можно выбрать sourceSet (по дефолту там main, но можно выбрать любой нужный) и тут уже структура и файлы (если надо) создадутся. Открываете слева внизу в студии Build Variants и выбираете там нужный вам вариант запуска. Например, Module: app -> Build Variant: paidDebug. Переключаетесь на freeDebug, студия сама все пересоберет. Профит. Ссылки по теме: Configuring Gradle Builds An Android Studio Gradle Build Variants Example

Ответ 2



Когда дело доходит до повторного использования кода, очень удобно разбивать проект на несколько независимых модулей. Тогда, у вас фактически будет два уникальных приложения, использующих одни и те же библиотеки. Разбиение на компоненты можно реализовать, например, на основе системы контроля версий (например Git). При этом, у вас получится три (или больше), репозитория, в которых будут храниться код платного и бесплатного приложений, а так же общих библиотек. Связь между репозиториями можно осуществлять (если речь идет о Git) через подмодули. При обновлении общих классов вы меняете их исходные код, отправляете изменения в репозиторий, обновляете зависимости в приложениях и прересобираете их, не занимаясь ручным копированием/вставкой кода.

Ответ 3



Проще всего это реализовать через build.gradle в Android Studio. Почитайте про productFlavors. Добавьте следующие строки в build.gradle: productFlavors { lite { packageName = 'com.project.test.app' versionCode 1 versionName '1.0.0' } pro { packageName = 'com.project.testpro.app' versionCode 1 versionName '1.0.0' } } В этом примере я добавил два типа приложения: lite-версию и pro-версию. Каждая версия имеет свой versionCode и versionName (для публикации в Google Play). А в коде можно задать раздельную логику, проверяя переменную BuildConfig.FLAVOR: if (BuildConfig.FLAVOR == "lite") { // код отображения рекламы или прочие ограничения функционала } Для запуска и тестирования различных вариантов логики приложения на устройстве просто поменяйте тип запускаемого приложения на вкладке "Build Variants" в Android Studio. Список Build Variants автоматически сгенерируется исходя из указанных в build.gradle вариантов productFlavors:

Комментариев нет:

Отправить комментарий