Android Gradle自定义任务运行多个组件?任务不是很明显

时间:2018-01-12 09:25:30

标签: android gradle android-gradle gradle-task

我正在尝试为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循环每次都会运行,即使我只是希望它在我调用它时在任务内部运行。为什么是这样?是否可以在运行特定任务时专门运行?

0 个答案:

没有答案