2015-03-19 3 views
9

Ich habe eine Android-App mit Gradle gebaut, die BuildTypes und Produkt Flavours (Varianten) enthält. ich zum Beispiel kann diesen Befehl ausführen eine bestimmte apk zu bauen:Android Gradle benutzerdefinierte Aufgabe pro Variante

./gradlew testFlavor1Debug 
./gradlew testFlavor2Debug 

Ich habe eine benutzerdefinierte Aufgabe in der build.gradle pro Variante zu erstellen, zum Beispiel:

./gradlew myCustomTaskFlavor1Debug 

Ich habe eine geschaffenes Aufgabe dafür:

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

Mein Problem ist, dass diese Aufgabe für alle Varianten genannt wird, nicht der einzige, bei mir läuft. Ausgang:

./gradlew myCustomTaskFlavor1Debug 

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

Erwarteter Ausgang:

./gradlew myCustomTaskFlavor1Debug 

*** TEST *** 
Flavor1Debug 

Wie kann ich eine benutzerdefinierte Aufgabe definieren, dynamisch, pro Variante, und dann mit der rechten Variante nennen?

Antwort

14

Es passiert, weil die Logik bei Konfiguration Zeit ausgeführt wird. Versuchen Sie, eine Aktion Hinzufügen (<<):

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

entdeckte ich es nur von mir selbst :(danke für den Tipp sowieso – Nicola

+0

ich ein paar Minuten warten musste, es zu akzeptieren;)! – Nicola