构建版本-Android

时间:2018-12-25 14:05:15

标签: android build.gradle

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        //noinspection GroovyAssignabilityCheck
        output.outputFile = new File(output.outputFile.parent,
                output.outputFile.name.replace(".apk", "-${variant.versionName}.apk"))
    }
}

需要对以上代码进行澄清。

  1. 重命名生成的.apk文件的唯一目的是吗?
  2. 为什么我需要添加此行//noinspection GroovyAssignabilityCheck
  3. 以上行是否会导致运行时崩溃或任何问题?
  4. applicationVariants.all {}还可以做什么?

2 个答案:

答案 0 :(得分:0)

1是,仅重命名

2不确定。 outputFile是只读的-此代码不适用于最新的Gradle

3不,Gradle不会影响运行时间

4个Gradle动作

答案 1 :(得分:0)

您的上述代码在Android Studio 3.2.1中不起作用。

如果要重命名APK,并要提取proguard映射文件。

applicationVariants.all { variant ->
    if (variant.buildType.name == "release") {
        def formattedDate = new Date().format('ddMMMyy_HH_mm')
        variant.outputs.all { output ->

            def formattedName  = "${"SampleName" + variant.productFlavors.get(0).name.concat("_")}" +
                    "${variant.buildType.name[0].toUpperCase().concat("_v")}${variant.versionName.concat("_" + formattedDate)}"

            outputFileName = new File("${"v"+variant.versionName.concat("/")}" +formattedName+".apk")

            if (variant.getBuildType().isMinifyEnabled()) {
                copy {
                    from variant.mappingFile
                    into output.outputFile.parent
                    rename { String fileName ->
                        formattedName +  "_mapping.txt"
                    }
                }
            }
        }
    }
}

上面的代码将为apk提供 / BuildVariant / vVersionName / SampleName_BuildVariant_BuildType_vVersionName_DDMMMYY_HH_mm.apk

  

您还可以设置仅在发行版上执行上述所有操作