Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated
平台:AndroidStudio
错误提示:Cannot set the value of read-only property ‘outputFile’ for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
错误时代码
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
def fileName
def projectName = "Client"
def tabCount = 4
def buildType = variant.buildType.name
def tempTime = new Date().format("yyyyMMddHHmm")
def versionName = defaultConfig.versionName
def suffix = applicationId.contains("X") ? "X" : ""
if (outputFile != null && outputFile.name.endsWith('.apk')) {
fileName = projectName + "_" + buildType + "_" + tabCount + "_" +
versionName + "_" + tempTime + suffix + ".apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
正确时代码
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
def fileName
def projectName = "Client"
def tabCount = 4
def buildType = variant.buildType.name
def tempTime = new Date().format("yyyyMMddHHmm")
def versionName = defaultConfig.versionName
def suffix = applicationId.contains("X") ? "X" : ""
if (outputFile != null && outputFile.name.endsWith('.apk')) {
fileName = projectName + "_" + buildType + "_" + tabCount + "_" +
versionName + "_" + tempTime + suffix + ".apk"
output.outputFileName = fileName
}
}
}
旧版本的Gradle, output.outputFile接收File类型。
而新版本的Gradle, 要使用output.outputFileName,接收String类型。