Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 执行AssemblerEase Gradle任务现在可以从自定义任务开始工作_Android_Android Gradle Plugin - Fatal编程技术网

Android 执行AssemblerEase Gradle任务现在可以从自定义任务开始工作

Android 执行AssemblerEase Gradle任务现在可以从自定义任务开始工作,android,android-gradle-plugin,Android,Android Gradle Plugin,我在build.Gradle文件中定义了以下Gradle任务 task myTask() << { println "Start" assembleRelease.execute() println "end" } 如您所见,“开始”后面跟着“结束”,这意味着未调用assembleerelease 我做错了什么?Gradle中的每个任务都是DAG上的节点。听起来好像你在试图用一个任务来围绕另一个任务,这不符合模型。但是,您可以使用doFirst和doLast

我在build.Gradle文件中定义了以下Gradle任务

task myTask() << {
    println "Start"
    assembleRelease.execute()
    println "end"
}
如您所见,“开始”后面跟着“结束”,这意味着未调用
assembleerelease


我做错了什么?

Gradle中的每个任务都是DAG上的节点。听起来好像你在试图用一个任务来围绕另一个任务,这不符合模型。但是,您可以使用
doFirst
doLast
将工作附加到任何任务的开始和/或结束。如果希望它是可选的,可以使它依赖于可选的命令行参数

ext.SHOULD_WRAP = hasProperty('shouldWrap') ? shouldWrap.toBoolean() : false
if (SHOULD_WRAP) {
    wrapAssemble()
}
def start() {
    println "Start"
}
def end() {
    println "end"
}
def wrapAssemble() {
    assembleRelease.doFirst {
        start()
    }
    assembleRelease.doLast {
        end()
    }
}
使用此配置,调用
/gradlew assembleerelease-PshouldWrap=true
将使用预先完成和追加的工作执行组装任务。调用
/gradlew assembleerelease-PshouldWrap=false
或simple
/gradlew assembleerelease
将正常执行组装任务

旧答案

只需将任务设置为assembleRelease的依赖项:


task myTask()但在调用assembleRelease之前和之后如何执行代码?在您的回答中,“我的任务”将仅在之前启动。请参阅更新的回答以了解实现此目的的方法。谢谢,看起来与我的预期接近。但我并不总是希望在运行assembleRelease时调用开始和结束任务。在某些情况下,我只想运行assembleRelease,而不添加任何内容。也有办法实现吗?谢谢,虽然它看起来不是很整洁,但我想这是唯一的解决方法。我必须告诉管理员,提议的解决方案不起作用,doFirst和doLast从未被调用过。
ext.SHOULD_WRAP = hasProperty('shouldWrap') ? shouldWrap.toBoolean() : false
if (SHOULD_WRAP) {
    wrapAssemble()
}
def start() {
    println "Start"
}
def end() {
    println "end"
}
def wrapAssemble() {
    assembleRelease.doFirst {
        start()
    }
    assembleRelease.doLast {
        end()
    }
}