使用android gradle插件时,在packageApplication之后运行任务

时间:2014-02-24 17:37:06

标签: android gradle android-gradle build.gradle

Gradle具有在其他任务之后运行任务的能力。语法为taskY.mustRunAfter taskX。 android gradle插件说它定义的ApplicationVariant任务之一是packageApplication

在我的build.gradle中,我有 taskX.mustRunAfter packageApplication

我得到的错误是“无法在项目中找到属性'packageApplication':someproject'。”

是否可以访问packageApplication任务?如果这样被认为是不好的做法?

2 个答案:

答案 0 :(得分:8)

我找到了答案。 rciovati清除了围绕mustRunAfter的混乱,我正在做的是错误的做法。 我最终将taskY转换为groovy函数。然后使用以下代码:

android.applicationVariants.all { variant ->
    // rename apk after we assemble the application
    variant.assemble.doLast {
        taskY(variant)
}

答案 1 :(得分:1)

请注意文档中的这句话:

  

通过使用“必须运行”排序规则,您可以指定该任务B.   必须始终在taskA之后运行,只要taskA和taskB都运行   计划执行

这意味着

taskX.mustRunAfter packageApplication

不会使taskX始终在packageApplication之后运行,但只要您键入:

./gradlew taskX packageApplication

另一方面,它没有定义依赖关系,也就是说它不会自动运行taskX任务。

要执行某些操作,执行任务后您可以使用doLast闭包:

taskX.doLast{ println 'Hello' }

packageApplicationApplicationVariant类的属性,但不是任务。任务是package<VariantName>