Demo app for add multiple product flavours

Product Flavors

Demo app for add multiple Product Flavors

Product flavor is a variant of your app. It is very useful when you want to create multiple versions of your app.

Setting Up Product Flavors

Open up your build.gradle file in the app module and add your flavors inside the android section. The below example has 3 product flavors added with each having its own applicationId, signingConfig

 flavorDimensions 'flavors'
    productFlavors {
        flavor1 {
            dimension 'flavors'
            applicationId 'com.example.productflavours1'
            versionCode 1
            versionName '1.0.0'
            signingConfig signingConfigs.signKey1Config//specify sign key here
            resValue "string", "resvalue1", "valueFromGradle1"//create resource value from here.
            buildConfigField 'int', FIELD_NAME_BUILD_CONFIG_FIELD, "1"//create build config field
        }

        flavor2 {
            dimension 'flavors'
            applicationId 'com.example.productflavours2'
            versionCode 1
            versionName '1.0.0'
            signingConfig signingConfigs.signKey2Config//specify sign key here
        }

        flavor3 {
            dimension 'flavors'
            applicationId 'com.example.productflavours3'
            versionCode 1
            versionName '1.0.0'
            signingConfig signingConfigs.debug//specify sign key here.
        }
    }

configure signingConfig

 signingConfigs {
        //define multiple sign keys here
        signKey1Config {
            storeFile file('your_key_1.jks')
            keyAlias 'your_key_1'
            keyPassword 'your_key_1_pswd'
            storePassword 'your_key_1_pswd'
        }

        signKey2Config {
            storeFile file('your_key_2.jks')
            keyAlias 'your_key_2'
            keyPassword 'your_key_2_pswd'
            storePassword 'your_key_2_pswd'
        }
    }

Build Variant

Select Build > Select Build Variant in the menu bar, and you will see the different Build Variants auto-generated when you added the Product flavors.

Structuring your Flavors

Your main folder is the one that contains all the common and shared code between flavors, you can create flavor specific code and files by creating different source set for each flavor MyProject/app/src/main

Get the flavor at runtime

You can check direct with flavor and your config name in everwhere, BuildConfig has already BuildType

if(BuildConfig.FLAVOR == "release"){// TODO}
else if(BuildConfig.FLAVOR == "staging"){ //TODO }
else if(BuildConfig.FLAVOR == "debug"){ //TODO }

Build apk/aab

To build apk or appbundle for each flavor you can select from this popup

GitHub

View Github