¿Cómo aplicar el plugin a un solo sabor en gradle?

Tengo un multi-sabor, multi-build-typed android proyecto y quiero integrar el plugin NewRelic. Pero tengo que aplicar sólo para uno de los clientes, por lo tanto, sólo para un sabor de producto.
NewRelic utiliza la instrumentación y el plugin generaría código en otros sabores si apliqué el plugin allí, y eso no está permitido para nosotros.

Así que mi pregunta es: ¿Cómo puedo utilizar el comando apply plugin: something en el archivo gradle para ser aplicado a sólo uno de mis sabores?

  1. Definir variable – def fl
  2. Initialize variable in you Flavors (y / o builds)

      productFlavors { freeFlavour { (...) fl = "free" } paidFlavour { (...) fl = "paid" } } 
  3. Usar si declaración –

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

Utilice este código:

 if (!getGradle().getStartParameter().getTaskRequests() .toString().contains("Develop")){ apply plugin: 'com.google.gms.google-services' } 

He encontrado una solución, pero no es la mejor hasta ahora. Así que ya no estoy seguro de que lo que quería hacer inicialmente es posible. La evaluación del archivo gradle y la elección del sabor y tipo de construcción correctos se encuentra en diferentes fases de la construcción gradle, así que lo que he hecho es:

Utilizo un parámetro de construcción desde la línea de comandos. Cuando ese paramerer es verdadero, aplico el complemento, cuando no está ahí, también lo aplico (para la compilación IDE). Utilizo Jenkins, así que podría escribir ese parámetro en el trabajo de la estructura.

Archivo build.gradle:

 // First we have to attach a task to the project, which will be running first gradle.projectsEvaluated { preBuild.dependsOn(applyNewRelicByProperty) } // Then check on the parameter, which comes from the command line task applyNewRelicByProperty { if(!project.hasProperty('compileNewRelic')) { // NewRelic on: 'compileNewRelic' property not set, so running from IDE. apply plugin: 'newrelic' } else if(project.hasProperty('compileNewRelic') && project.getProperties().get('compileNewRelic').equals('true')) { // NewRelic on: 'compileNewRelic' property is set and it is 'true'. apply plugin: 'newrelic' } else { // NewRelic off println("No NewRelic") } } 

Y tienes que ejecutar el gradle construir por esto:

 assembleYourApp -PcompileNewRelic=true 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.