1.错误描述
Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[], versionCode=76, versionName=1.10.31}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
2. 错误原因
Android 插件 3.0.0 引入了一些移除特定功能的 API 变更,可能会破坏您现有的构建。
output.outputFile变成了只读属性,不能再往里面写东西了;
参考:https://developer.android.google.cn/studio/build/gradle-plugin-3-0-0-migration.html#variant_api
3. 解决方案
1. variant.outputs.each 改为 variant.outputs.all
2. output ->output.outputFile = new File(parent,fileName);改为outputFileName = fileName
3修改代码
原配置:
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent,
"dj" + "_v" +
defaultConfig.versionName + "_" + defaultConfig.versionCode + "_" +
new Date().format("yyyy-MM-dd") + "_" + buildType.name +
".apk");
}
}
修改为:
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName ="dj" + "_v" +
defaultConfig.versionName + "_" + defaultConfig.versionCode + "_" +
new Date().format("yyyy-MM-dd") + "_" + buildType.name +
".apk"
}
}