Product flavors — незаменимая gradle-фича, полезная при создании нескольких
версий одного Android-приложения (имею ввиду, например, версии demo/full/pro, а также
вариации под различные устройства). Достаточно добавить несколько строк кода в
раздел android{...}
файла build.gradle
:
android {
...
productFlavors {
free {
applicationId "azagroup.testapp"
versionName "1.0"
}
pro {
applicationId "azagroup.testapp.pro"
versionName "1.0-pro"
}
}
}
В productFlavors
могут находиться все те же правила, что и в элементе defaultConfig
.
В данном случае я переопределил applicationId
, чтобы в Google Play это было отдельным приложением,
и versionName
, чтобы у пользователя отображалась соответствующая версия.
Кстати, из defaultConfig
эти дублирующие правила можно будет убрать.
После правки обновите проект (нажмите Sync Now, либо Refresh Gradle projects). Теперь можно добавлять классы и ресурсы специально для каждой из версий приложения.
Например, чтобы добавить ресурс, нужно кликнуть ПКМ по названию модуля и выбрать New > Android resource file. Далее можно будет указать для какой версии приложения нужен данный ресурс:
Таким образом можно легко дать приложению информацию
о том, в каком режиме оно запущено, debug или release. Достаточно иметь 2 value-ресурса,
один в main
, другой, скажем, в debug
, и в каждый из них добавить строчку с
нужным значением, которое затем проверять при запуске приложения:
<bool name="debug_mode">true</bool>
Идём дальше. Чтобы добавить разные классы для разных версий, нужно сначала создать соответствующую файловую структуру,
например, src/free/java
и src/pro/java
.
Обратите внимание, что в отличие от ресурсов, нельзя создать один и тот же класс в папке main
и,
например, в папке pro
. Возникнет ошибка дублирования. Если вам нужно
иметь модификацию одного класса для разных версий, то создавайте в каждой из
веток свою версию этого класса, а из папки main
его убирайте. После
выбора нужного Build Variant соответствующая ветка станет активной:
Можно запускать проект!