我正在尝试为Android项目创建一个自定义Gradle任务,同时构建我的两种风格,重命名APK,然后将它们复制到另一个文件夹。
问题是我有这个任务的另一个版本几乎与第一个版本相同,当我运行一个任务时,其他任务的一部分也会运行。
这是我的第一个任务:
task buildWithVersion(type: GradleBuild) {
delete "$buildDir/outputs/apk"
delete "$buildDir/outputs/verionapks"
tasks = ['assembleMyAppDebug', 'assembleMyAppRelease']
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = "${variant.name}_${variant.versionName}.apk"
}
}
doLast {
copy {
from "$buildDir/outputs/apk"
into "$buildDir/outputs/verionapks"
include '**/release/*.apk'
}
}
}
然后是第二个:
task buildWithoutVersion(type: GradleBuild) {
delete "$buildDir/outputs/apk"
delete "$buildDir/outputs/noneverionapks"
tasks = ['assembleMyAppDebug', 'assembleMyAppRelease']
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
outputFileName = "${variant.name}.apk"
}
}
doLast {
copy {
from "$buildDir/outputs/apk"
into "$buildDir/outputs/noneverionapks"
include '**/release/*.apk'
}
}
}
我需要两个单独的任务,但问题是当我运行第一个任务然后apks被重命名就好像第二个任务已经运行,所以apk以这种格式重命名为“$ {variant.name} .apk “而不是我在第一个任务中想要的格式。 (第二项任务是在我的应用程序build.gradle文件中的第一项之后)
看起来android.applicationVariants.all循环每次都会运行,即使我只是希望它在我调用它时在任务内部运行。为什么是这样?是否可以在运行特定任务时专门运行?