本文主要是介绍Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=M,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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"}
}
这篇关于Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=M的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!