Android_项目_自定义编译后APK文件名问题

自定义编译后APK文件名问题

初遇

gradle 打包,自定义 apk 名称代码报错:

(Cannot set the value of read-only property ‘outputFile’ ) 
Error:(56, 0) 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 Studio 3.0 的自带 Gradle 版本是 4.1,插件版本是 3.0.0,所以如果你使用的是老版本,就会出现一些小的兼容问题。

解决

旧代码:

        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                if (output.outputFile != null && output.outputFile.name.endsWith('.apk')
                        && 'release'.equals(variant.buildType.name)) {
                    def apkFile = new File(
                            output.outputFile.getParent(),
                            "CodeBox_${variant.flavorName}_v${variant.versionName}_${variant.versionCode}_${buildTime()}.apk")
                    output.outputFile = apkFile
                }
            }
        }

新代码:

        android.applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "CodeBox_${variant.flavorName}_v${variant.versionName}_${variant.versionCode}_${buildTime()}.apk"
            }
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,838评论 25 709
  • 这一章主要针对项目中可以用到的一些实用功能来介绍Android Gradle,比如如何隐藏我们的证书文件,降低风险...
    acc8226阅读 7,725评论 3 25
  • 周五的下午,在常外的200人报告厅听了家庭高级教育家张黎老师讲了关于青春期教育的话题分享,受益非浅。 ...
    田春馨阅读 1,623评论 0 0
  • 爬到别人头上正确路径 4条职业发展路径 向上:在企业内向上晋升 向内:成为更专业的人才 左右:向其他职能转换 向外...
    柳叶飘絮阅读 589评论 0 1
  • 大周末的,有着二姐吃货的陪伴就是不一样,这不才做客吃完了肉肉出来,又开始有别的小吃可以吃。 炸洋芋、麻...
    珠爱婷阅读 328评论 0 11