错误
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 插件 3.0.0 引入了一些移除特定功能的 API 变更,可能会破坏您现有的构建。
output.outputFile变成了只读属性,不能再往里面写东西了;
参考:https://developer.android.google.cn/studio/build/gradle-plugin-3-0-0-migration.html#variant_api
解决
android.applicationVariants.all { variant ->
variant.outputs.each {
def file = it.outputFile
it.outputFile = new File(file.parent, file.name.replace(".apk", "-${variant.versionName}.apk"))
}
}
改为
variant.outputs.all {
outputFileName ="pudding" + "_v" + variant.versionName + "_" + buildType.name + ".apk"
}
或者携带更全的参数
variant.outputs.all {
outputFileName ="pudding" + "_v" +
defaultConfig.versionName + "_" + defaultConfig.versionCode + "_" +
new Date().format("yyyy-MM-dd") + "_" + buildType.name +
".apk"
}