Android Gradle 6.5 AS 4.1设置outputFileName已获取此属性的值,无法更改任何进一步的错误
我有一个gradle任务,当我发布apk时,它被称为,我这样称呼它: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
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"
}
}
}