How to apply plugin to only one flavor in gradle?
Use this code:
if (!getGradle().getStartParameter().getTaskRequests() .toString().contains("Develop")){ apply plugin: 'com.google.gms.google-services'}
getGradle().getStartParameter().getTaskRequests().toString()
returns something like [DefaultTaskExecutionRequest{args=[:app:generateDevelopDebugSources],projectPath='null'}]
so as stated in the comments Develop
must start with an uppercase.
Tried different solutions, but none of them worked for me. This is what I came up with and seems to work as far as I tested:
build.gradle
productFlavors { someFlavorWithGoogleGcm { dimension "type" applicationId "com.example.withGcm" ext.useGoogleGcm = true } someFlavorWithoutGoogleGcm { dimension "type" applicationId "com.example.withoutGcm" }}
And outside the configuration, inside the build.gradle
file:
android.productFlavors.each { flavor -> if (getGradle().getStartParameter().getTaskRequests().toString().toLowerCase().contains(flavor.name) && flavor.ext.useGoogleGcm) { println("Building flavor with Google GCM [${flavor.name}] - applying plugin") apply plugin: 'com.google.gms.google-services' }}
- Define variable -
def fl
Initialize variable in you Flavours (and/or builds)
productFlavors { freeFlavour { (...) fl = "free" } paidFlavour { (...) fl = "paid" } }
Use if statement -
if (fl == "free") { apply plugin: something}