在gradle中更改apk文件名

Hen*_*rik 5 android android-gradle-plugin

我想在我的项目中使用android构建工具"com.android.tools.build:gradle:3.0.0-alpha4".在我的构建脚本中,我重命名输出apk,它在过去运行良好但似乎不再受支持.

applicationVariants.all { variant ->

    def filename = "foo-${variant.baseName}-${variant.versionName}-(${android.defaultConfig.versionCode}).apk"

    variant.outputs.all { output ->
        output.outputFile = new File(
                output.outputFile.parent,
                filename
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我试图改变的属性变得不可变:

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

有新的或替代的方法如何做到这一点?

小智 1

  1. 更改each-> 为all
  2. 更改output.outputFile-> 为outputFileName

前:

android.applicationVariants.all { variant ->

    variant.outputs.each { output ->
        def finalVersionCode =v10000 + versionCode
        output.versionCodeOverride = finalVersionCode
        output.outputFile = new File(
             output.outputFile.parent,       output.outputFile.name.replace(".apk","-${finalVersion}.apk"))
    }
}
Run Code Online (Sandbox Code Playgroud)

后:

android.applicationVariants.all { variant ->

    variant.outputs.all { output ->
        def finalVersionCode = 10000 + versionCode
        output.versionCodeOverride = finalVersionCode
        outputFileName = new File(
             output.outputFile.parent,
             outputFileName.replace(".apk", "-${finalVersionCode}.apk"))
    }
}
Run Code Online (Sandbox Code Playgroud)