Edit buildconfig fields for debug flavor builds

we use several product flavors that edit buildConfig fields. I’m wondering if it is possible to differentiate them and append parameter to field for debug builds only.

to give an example :

productFlavors {
    apple {
        buildConfigField "String", FRUIT_DIR, "\"Lorem\""
    }
    banana {
        buildConfigField "String", FRUIT_DIR, "\"Ipsum\""
    }
    peach {
        buildConfigField "String", FRUIT_DIR, "\"Dolor\""
    }
    mango {
        buildConfigField "String", FRUIT_DIR, "\"Amet\""
    }
}

what id like to do (writtent in pseudocode)

productFlavors.all { flavor ->
    if (flavor.buildType == debug) {
        flavor.FRUIT_DIR.append("_debug")
    }
}

Is anything like this possible?

Answering my own question, this is what I ended up doing.

applicationVariants.all { variant ->
    def fruitDirValue = variant.getProductFlavors().get(0).getBuildConfigFields().get(FRUIT_DIR).value
    fruitDirValue = fruitDirValue.substring(0, fruitDirValue.length() - 1) //remove second quotation mark
    if (variant.getBuildType().isDebuggable()) {
        variant.buildConfigField("String", FRUIT_DIR, fruitDirValue + "_debug\"")
    }
}
1 Like

Nice solution. Though its strange that > getBuildConfigFields() is not mentioned in the official documentation for ProductFlavor just > buildConfigField function to set it. Anyways thanks for this.