Android Gradle在所有包变量发布任务之后运行自定义任务
我的Customtask解压apk并收集某个文件的sha1,因此我已经创建了我的任务,但我想在每次生成任何apk(任何构建或任何变体)时执行它,不知道如何在创建apk后准确触发我的任务。请帮忙 像下面这样的事情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
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()}"
}
}