Android Gradle 6.5 AS 4.1设置outputFileName已获取此属性的值,无法更改任何进一步的错误

Android Gradle 6.5 AS 4.1设置outputFileName已获取此属性的值,无法更改任何进一步的错误,android,gradle,android-gradle-plugin,build.gradle,Android,Gradle,Android Gradle Plugin,Build.gradle,我有一个gradle任务,当我发布apk时,它被称为,我这样称呼它: tasks.whenTaskAdded { task -> if (task.name == 'preDeployBuild') { task.dependsOn deployTask } } 它本身的任务是: task deployTask { doFirst { versionCode = versionJSON.buildNumber lat

我有一个gradle任务,当我发布apk时,它被称为,我这样称呼它:

tasks.whenTaskAdded { task ->
    if (task.name == 'preDeployBuild') {
        task.dependsOn deployTask
    }
}
它本身的任务是:

task deployTask {
    doFirst {
        versionCode = versionJSON.buildNumber
        latestVersionCode = versionCode
        println "$versionCode"
        versionFile.write(new JsonBuilder(versionJSON).toPrettyString())
        def versionNameRelease = getVersionNameRelease()
        ext.latestVersionName = versionNameRelease
        android.applicationVariants.all { variant ->
            variant.outputs.all {
                println "$versionNameRelease"
                println "$versionCode"
                versionNameOverride = versionNameRelease
                versionCodeOverride = versionCode
                outputFileName = "${appName}_${latestVersionName}.${new Date().format('yyyyMMdd')}.apk"
            }
        }
    }
}
我更新到Gradle 6.5,但这不再有效,出现以下错误:

> The value for this property cannot be changed any further.
在gradle任务运行期间更新VersionName versionCode和outputFileName的正确方法是什么?

也有同样的问题

      def fileNameCreate = { variant ->
            variant.outputs.all { output ->
                outputFileName = "epromo-${variant.versionName}(${variant.versionCode})-${variant.baseName}.apk"
            }
        }

outputFileName-Gradle错误:无法进一步更改此属性的值。

我已通过这种方式解决了此问题

将任务设为函数并在buildTypes块内调用:

    releaseMajor {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            def startTask =  project.gradle.startParameter.taskNames[0]
            if(startTask == ':app:assembleReleaseMajor') {
                increaseMajor()
                relaseTask()
            }
        }
在函数relaseTask do stuff中:

def relaseTask() {
....
    android.applicationVariants.all { variant ->
        variant.outputs.all {
            println "$versionNameRelease"
            println "$versionCode"
            versionNameOverride = versionNameRelease
            versionCodeOverride = versionCode
            outputFileName = "${appName}_${latestVersionName}.${new Date().format('yyyyMMdd')}.apk"
        }
    }
}