首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法为ApkVariantOutputImpl_Decorated设置只读属性'outputFile‘的值

无法为ApkVariantOutputImpl_Decorated设置只读属性'outputFile‘的值
EN

Stack Overflow用户
提问于 2017-10-26 16:28:22
回答 7查看 53K关注 0票数 58

我在gradle脚本中使用了以下代码来重命名使用AndroidStudio生成的apks:

代码语言:javascript
复制
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(output.outputFile.parent, defaultConfig.versionCode + "_" + output.outputFile.name)
    }
}

因此,它生成的versionCode的名称类似:345-app-release.apk,,其中345是apks。

但是在更新到AndroidStudio 3.0之后,它返回以下错误:

无法为类型为com.android.build.gradle.internal.api.ApkVariantOutputImpl.的ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN,fullName=debug,filters=[]}}设置只读属性'outputFile‘的值

如何使用新的构建工具实现类似的重命名。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-10-26 21:35:33

使用output.outputFileName而不是output.outputFile

票数 113
EN

Stack Overflow用户

发布于 2017-11-28 12:05:46

2019 - Gradle 3.0+**和3.1.0的简单解决方案

在Android中更改APK的名称

代码语言:javascript
复制
 android { //add inside the android {}
   ......
   applicationVariants.all { variant ->
       variant.outputs.all {
           def flavor = variant.name
           def versionName = variant.versionName
           outputFileName = "prefix_${flavor}_${versionName}.apk"
       }
   }
}

prefix_release_1.0.1.apk

票数 31
EN

Stack Overflow用户

发布于 2018-06-27 19:32:55

尝试以下代码:

代码语言:javascript
复制
buildTypes {

       applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def name = "myapp_v${variant.versionName}(${variant.versionCode}).apk"
                output.outputFileName = name
            }
        }

    }
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46949311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档