urgas9
urgas9

Reputation: 826

Android app name depends on buildType and flavours Gradle

Below is an extract from my gradle source code. What I want to achieve is to add suffix to app name when buildType.debug is executed. I tried the following code, but variables are in gradle assigned in sequence as they are written in file and not as task order. So in the example below buildVariant variable will always be equal to Release.

{
def buildVariant = ""   
buildTypes {
    debug {
        manifestPlaceholders = [showDebug: 'true']
        buildVariant = " (DEBUG)"
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        manifestPlaceholders = [showDebug: 'false']
        signingConfig signingConfigs.myConf
        buildVariant = " Release"
    }
}    
productFlavors {

    flavour1{
        resValue 'string', 'app_name', 'Flavour1'+buildVariant
    }
    flavour2{
        resValue 'string', 'app_name', 'Flavour2'+buildVariant
    }
    flavour3{
        resValue 'string', 'app_name', 'Flavour3'+buildVariant
    }
}

Upvotes: 3

Views: 1437

Answers (1)

Konstantin Loginov
Konstantin Loginov

Reputation: 16000

It was a really interesting puzzle to solve, so thanks for the question!

Here what you can do:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        ....
    }
    buildTypes {
        debug {
        }

        release {
        }
    }

    productFlavors {
        FlavorA {
        }

        FlavorB {
        }
    }

    applicationVariants.all { variant ->
        variant.resValue "string", "app_name", '"' + variant.productFlavors.get(0).name + '_' + variant.buildType.name + '"'
    }

}

dependencies {
}

As a result, it'd print the app name "FlavorA_debug", "FlavorB_release", etc.

(NB! I ran it with gradle classpath 'com.android.tools.build:gradle:1.3.0' - works great, though I didn't try with older versions)

Upvotes: 5

Related Questions