我正在尝试为一个 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'
}
}
}
为此我需要两个单独的任务,但问题是当我运行第一个任务时,apk 会被重命名,就像第二个任务已经运行一样,所以 apk 以这种格式重命名为“$ {variant.name}.apk”,而不是我在第一个任务中想要的格式。(第二个任务是在我的应用程序 build.gradle 文件中的第一个任务之后)
看起来 android.applicationVariants.all 循环每次都会运行,即使我只希望它在我调用它时在任务中运行。为什么是这样?是否可以仅在运行特定任务时才专门运行?