web-dev-qa-db-ja.com

Android studioでカスタムの独立したGradleタスクを実行します

Android複数のモジュールを含むプロジェクトがあります。モジュールの1つからカスタムGradleタスクを実行しようとしていますが、タスクを実行するたびに、モジュール内の他のすべてのGradleタスクも実行しています他のモジュールと同様に、私のタスクは他のタスクに依存していません。タスク:

task helloTask{
   println "Hello task"
}

このタスクは、スタジオのターミナルウィンドウとコマンドラインから実行してみました。

16
Umang

Gradleは、設定フェーズ中に<<で宣言されていないすべてのタスクを実行します。タスクの実行を実行フェーズまで遅らせたい場合は、<<を追加するだけです。

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

次に、helloExecutionタスクを実行すると、両方が実行され、順序が保証されます。次に、ビルドを構成するタスクのみを実行したい場合は、必要に応じて個別に実行して、単一のタスクのみを実行できます。

$ 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

構成フェーズ中に実行されるタスクは、タスクが指定されていなくても常に実行されます。これは、私が見ている動作です。上記の例を考えてみましょう。構成タスクは実行されましたが、実行されなかったことに注意してください。

$ 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

したがって、構成フェーズで実行される5つのタスクがある場合、コマンドライン引数が実行フェーズのターゲットに対して呼び出そうとしたタスクに関係なく、それらすべてが実行されることがわかります。

14
JBirdVegas

Android StudioがGradleビューを表示します(Android Studioウィンドウ)の右上隅)

Gradleタスクの実行(丸いボタン)を押します。

モジュールのリストから、build.gradleを含むモジュールを選択し、タスクのリストからタスクを選択します。

enter image description here


また、Gradleビューツリーでは、タスクにgroupが明示的に指定されていない限り、タスクはYourModule/Tasks/otherの下に表示されます。

7
cyanide

実行構成を使用して同じことを実現できます。参照: https://developer.Android.com/studio/run/rundebugconfig.html

[実行]-> [構成の編集]-> [+]をクリックして新しい構成を追加->表示されるリストから[Gradleを選択]に移動します。最後にアプリを選択し、実行するタスクを入力します。 Android Studioは、オートコンプリートも提供します。

後で、そのタスクの実行は、[実行]メニューのオプションとして直接利用できるようになります。

1
Kalam Shah

あなたは正しいコマンドを与えていませんか?

独立したタスクを実行するプロセス:

  1. app/build.gradleファイルにタスクを追加します。例えば:
task helloExecution { task ->
    doLast {
        println "Hello exececuted"
    }
}
  1. ターミナルでプロジェクトフォルダに移動した後、./gradlew taskNameと入力します
    例:./gradlew helloExecution