How to apply plugin to only one flavor in gradle? How to apply plugin to only one flavor in gradle? android android

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'    }}


  1. Define variable - def fl
  2. Initialize variable in you Flavours (and/or builds)

        productFlavors {            freeFlavour {                (...)                fl = "free"            }            paidFlavour {                (...)                fl = "paid"            }        }
  3. Use if statement -

    if (fl == "free") { apply plugin: something}