2

I want to do something like this:

 productFlavors {
        favor1 {
            buildConfigField 'String', 'SERVICE_URL', BuildConfig.BUILD_TYPE.equals("test") ?
                    '"oneThing"' :
                    '"anotherThing"'
        }
        //more flavors
}

But obviously I get an error when BuildConfig.BUILD_TYPE.equals("test") ?. Is there a way to do this?

Héctor
  • 24,444
  • 35
  • 132
  • 243

1 Answers1

1

Try the following:

   applicationVariants.all { variant ->
        def PRODUCT_IDENTIFIER = "PRODUCT_IDENTIFIER"
        def SERVER_URL = "SERVER_URL"

        def flavor = variant.productFlavors[0].name
        def buildType = variant.buildType.name

        if( flavor == "Demo") {
            buildConfigField "String", "PRODUCT_IDENTIFIER", "\"identifier_DEMO\""
        }
        else if( flavor == "Test") {
            buildConfigField "String", "PRODUCT_IDENTIFIER", "\"identifier_TEST\""
        }

        if( buildType == "debug" ) {
            variant.buildConfigField "String", "SERVER_URL", "\"https://myserver.com/debug\""
        }
        else if( buildType == "release" ) {
            variant.buildConfigField "String", "SERVER_URL", "\"https://myserver.com/release\""
        }
    }

Then, from Java side:

String identifier = BuildConfig.HOTEL_IDENTIFIER;
String serverUrl = BuildConfig.SERVER_URL

will result in:

DemoDebug

identifier -> "identifier_DEMO"
serverUrl -> "https://myserver.com/debug"

DemoRelease

identifier -> "identifier_DEMO"
serverUrl -> "https://myserver.com/release"

TestDebug

identifier -> "identifier_TEST"
serverUrl -> "https://myserver.com/debug"

TestRelease

identifier -> "identifier_TEST"
serverUrl -> "https://myserver.com/release"
Nicolas Buquet
  • 3,880
  • 28
  • 28