错误
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"
}

本文详细介绍了如何解决在使用Android Gradle Plugin 3.0.0时遇到的outputFile属性变为只读的问题。原本用于修改APK输出文件名的outputFile属性在新版本中不再允许直接修改。文章提供了更新后的代码示例,展示了如何正确地为不同的构建类型和版本设置APK输出文件名。
921

被折叠的 条评论
为什么被折叠?



