Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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 Gradle在所有包变量发布任务之后运行自定义任务_Android_Gradle_Android Gradle Plugin - Fatal编程技术网

Android Gradle在所有包变量发布任务之后运行自定义任务

Android Gradle在所有包变量发布任务之后运行自定义任务,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我的Customtask解压apk并收集某个文件的sha1,因此我已经创建了我的任务,但我想在每次生成任何apk(任何构建或任何变体)时执行它,不知道如何在创建apk后准确触发我的任务。请帮忙 像下面这样的事情 android { task customTask {} afterEvaluate { package<VariantName>Release.finalizedBy(customTask) } } 但我还有5个变体,如Packa

我的Customtask解压apk并收集某个文件的sha1,因此我已经创建了我的任务,但我想在每次生成任何apk(任何构建或任何变体)时执行它,不知道如何在创建apk后准确触发我的任务。请帮忙

像下面这样的事情

android {
    task customTask {}

    afterEvaluate {
        package<VariantName>Release.finalizedBy(customTask)
    }
}

但我还有5个变体,如PackageGearRelease等,之后我想运行相同的自定义任务。

您需要为每个构建变体创建一个任务:

android {
    applicationVariants.all { variant
        task "customTaskFor${variant.name.capitalize()}" {
            // configure your task
        }
        tasks["package${variant.name.capitalize()}Release"].finalizedBy "customTaskFor${variant.name.capitalize()}"
    }
}

在一个Gradle构建中不可能多次运行任务。您可以将每个
packageRelease
的操作放在单个任务中(在所有操作之后执行),或者为每个操作创建自定义任务。
afterEvaluate
作为配置阶段的最后一部分执行,这意味着在运行任何任务之前。任务只能在执行阶段运行。我会检查
packagexylease
任务的任务类型,并使用
tasks.withType(…)
或尝试直接迭代变量。
android {
    applicationVariants.all { variant
        task "customTaskFor${variant.name.capitalize()}" {
            // configure your task
        }
        tasks["package${variant.name.capitalize()}Release"].finalizedBy "customTaskFor${variant.name.capitalize()}"
    }
}