web-dev-qa-db-de.com

Führen Sie in Android Studio eine benutzerdefinierte, unabhängige Gradle-Aufgabe aus

Ich habe ein Android-Projekt mit mehreren Modulen. Ich versuche, eine benutzerdefinierte Gradle-Aufgabe von einem der Module aus auszuführen, aber jedes Mal, wenn ich die Aufgabe ausführe, werden alle anderen Gradle-Aufgaben sowohl im Modul als auch in den anderen Modulen ausgeführt. Meine Aufgabe ist nicht von anderen Aufgaben abhängig. Aufgaben : 

task helloTask{
   println "Hello task"
}

Ich habe versucht, diese Aufgabe über das Terminalfenster in Studio sowie über die Befehlszeile auszuführen.

12
Umang

Gradle führt alle Aufgaben aus, die während der Konfigurationsphase nicht mit << deklariert wurden. Wenn Sie die Ausführung einer Aufgabe bis zur Ausführungsphase verzögern möchten, können Sie einfach den << hinzufügen.

In Ihrem 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

Wenn Sie dann die Task helloExecution ausführen, werden beide ausgeführt, wobei die Reihenfolge gewährleistet ist. Wenn wir nur die Tasks ausführen möchten, die den Build konfigurieren, können wir dies separat ausführen, wenn wir nur eine einzelne Task ausführen möchten.

$ 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

Tasks, die während der Konfigurationsphase ausgeführt werden, werden IMMER ausgeführt, auch wenn keine Tasks bereitgestellt werden. Dies ist das Verhalten, das ich von Ihnen erwartet. So gegeben das Beispiel oben. Beachten Sie, dass die Konfigurationsaufgabe ausgeführt wurde, die Ausführung jedoch nicht.

$ 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

Wenn Sie also 5 Tasks in der Konfigurationsphase ausführen, werden alle von ihnen ausgeführt, unabhängig von der Task, die die Befehlszeilenargumente für das Ziel der Ausführungsphase aufrufen wollten.

11
JBirdVegas

In Android Studio die Gradle-Ansicht aufrufen (obere rechte Ecke des Android Studio-Fensters)

Drücken Sie Run Gradle Task (runde Taste).

Wählen Sie aus der Liste der Module das Modul mit build.gradle aus, und wählen Sie dann die Aufgabe aus der Liste der Aufgaben aus.

 enter image description here


Auch in der Verlaufsansicht wird Ihre Aufgabe unter YourModule/Tasks/other angezeigt, es sei denn, group ist explizit für die Aufgabe angegeben.

1
cyanide

Sie können Ausführungskonfigurationen verwenden, um dasselbe zu erreichen. Siehe: https://developer.Android.com/studio/run/rundebugconfig.html

Gehen Sie zu Ausführen -> Konfigurationen bearbeiten -> Klicken Sie auf +, um eine neue Konfiguration hinzuzufügen -> Wählen Sie Gradle aus der angezeigten Liste aus. Wählen Sie schließlich die App aus und geben Sie die Aufgabe ein, die Sie ausführen möchten. Android Studio bietet sogar Autovervollständigung für dasselbe.

Später wird die Ausführung dieser Aufgabe als Option direkt im Menü "Ausführen" verfügbar sein.

1
Kalam Shah