web-dev-qa-db-fra.com

Exécuter une tâche de gradle indépendante personnalisée dans un studio Android

J'ai un projet Android avec plusieurs modules. J'essaie d'exécuter une tâche de gradeau personnalisée à partir de l'un des modules, mais chaque fois, j'exécute la tâche pour toutes les autres tâches de gradé du module, ainsi que pour les autres. Ma tâche ne dépend d'aucune autre tâche. Les tâches : 

task helloTask{
   println "Hello task"
}

J'ai essayé d'exécuter cette tâche à travers la fenêtre du terminal en studio ainsi que depuis la ligne de commande.

12
Umang

Gradle exécutera toutes les tâches non déclarées avec << lors de la phase de configuration. Si vous souhaitez retarder l'exécution d'une tâche jusqu'à la phase d'exécution, vous pouvez simplement ajouter le <<

Dans votre build.gradle

task helloConfiguration { task ->
    println "Hello configuration phase task! $task.name"
}

/* Notice the `<<` this denotes to gradle to not execute
 * the closure during the configuration phase. Instead
 * delay closure's execution till the execution phase.
 */
task helloExecution << { task ->
    println "Hello execution phase task! $task.name"
}

helloExecution.dependsOn helloConfiguration

Ensuite, lors de l'exécution de la tâche helloExecution, nous voyons les deux exécuter, ordre assuré. Ensuite, si nous voulons seulement exécuter les tâches qui configurent la construction, nous pouvons le faire séparément si nous voulons et n’exécuter qu’une seule tâche.

$ gradle helloExecution
Hello configuration phase task! helloConfiguration
Hello execution phase task! helloExecution
:helloConfiguration UP-TO-DATE
:helloExecution UP-TO-DATE

BUILD SUCCESSFUL

Total time: 0.64 secs

$ gradle helloConfiguration
Hello configuration phase task! helloConfiguration
:helloConfiguration UP-TO-DATE

BUILD SUCCESSFUL

Total time: 0.784 secs

Les tâches qui s'exécutent pendant la phase de configuration seront TOUJOURS exécutées même si aucune tâche n'est fournie, ce qui est le comportement que j'attends de votre part. Donc, étant donné l'exemple ci-dessus. Notez que la tâche de configuration a été exécutée mais pas l'exécution.

$ gradle
Hello configuration phase task! helloConfiguration
:help

Welcome to Gradle 2.10.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

BUILD SUCCESSFUL

Total time: 0.651 secs

Ainsi, si vous avez 5 tâches qui s'exécutent dans la phase de configuration, vous les verrez toutes s'exécuter, quelle que soit la tâche que les arguments de ligne de commande ont tenté d'appeler pour la cible de la phase d'exécution.

11
JBirdVegas

Dans Android Studio, ouvrez la vue Gradle (coin supérieur droit de la fenêtre d'Android Studio).

Appuyez sur Exécuter Gradle Task (bouton rond).

Dans la liste des modules, sélectionnez le module contenant build.gradle, puis sélectionnez task dans la liste des tâches.

 enter image description here


Toujours dans l'arborescence de la vue Gradle, votre tâche apparaît sous YourModule/Tasks/other, à moins que group soit explicitement spécifié pour la tâche.

1
cyanide

Vous pouvez utiliser les configurations d'exécution pour obtenir le même résultat. Voir: https://developer.Android.com/studio/run/rundebugconfig.html

Allez dans Exécuter -> Modifier les configurations -> Cliquez sur + pour ajouter une nouvelle configuration -> Sélectionnez Gradient dans la liste qui apparaît. Enfin, sélectionnez l'application et tapez la tâche que vous souhaitez exécuter. Android Studio fournira même la saisie automatique pour la même chose.

Plus tard, l’exécution de cette tâche sera disponible en option directement dans le menu "Exécuter".

1
Kalam Shah