2015-03-19 23 views
9

Ho un'app per Android costruita con Gradle, che contiene BuildTypes e Product Flavors (varianti). Posso ad esempio eseguire questo comando per costruire un apk specifica:Attività gradle Android per variante

./gradlew testFlavor1Debug 
./gradlew testFlavor2Debug 

devo creare un'attività personalizzata nella build.gradle per ogni variante, per esempio:

./gradlew myCustomTaskFlavor1Debug 

Ho creato un compito per questo:

android.applicationVariants.all { variant -> 
    task ("myCustomTask${variant.name.capitalize()}") { 
     println "*** TEST ***" 
     println variant.name.capitalize() 
    } 
} 

Il mio problema è che questa operazione è chiamata per TUTTE le varianti, non l'unica che sto correndo. uscita:

./gradlew myCustomTaskFlavor1Debug 

*** TEST *** 
Flavor1Debug 
*** TEST *** 
Flavor1Release 
*** TEST *** 
Flavor2Debug 
*** TEST *** 
Flavor2Release 

risultato atteso:

./gradlew myCustomTaskFlavor1Debug 

*** TEST *** 
Flavor1Debug 

Come posso definire un compito personalizzato, dinamico, per ogni variante, e quindi chiamare con la variante a destra?

risposta

14

Succede perché la logica viene eseguita in configurazione. Prova ad aggiungere un'azione (<<):

android.applicationVariants.all { variant -> 
    task ("myCustomTask${variant.name.capitalize()}") << { 
     println "*** TEST ***" 
     println variant.name.capitalize() 
    } 
} 
+0

Ho appena scoperto che con la mia auto :(grazie per il suggerimento comunque – Nicola

+0

ho dovuto aspettare qualche minuto per accettarla;)! – Nicola

Problemi correlati