Android / gradle:包含apk文件名中的版本名称

时间:2014-08-12 16:33:16

标签: android gradle

我发现了类似的问题,但没有什么比我想做的更有效。我正在使用Android Studio和gradle进行开发,我的构建文件中有几种口味,每种口味都有一个版本名称。有没有办法在APK文件中包含flavor的版本名称?

2 个答案:

答案 0 :(得分:12)

编辑:对于Gradle工具的现代版本,请使用@ ptx的变体(使用output.outputFile代替variant.outputFile

android {
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.outputFile = new File(output.outputFile.parentFile,
                    output.outputFile.name.replace(".apk", "${variant.versionName}.apk"));
        }
    }
}

从Gradle工具插件版本0.14开始,您应该开始使用以下内容来正确支持多个输出文件(例如APK Splits):

android {
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            variant.outputFile = new File(variant.outputFile.parentFile,
                    variant.outputFile.name.replace(".apk", "${variant.versionName}.apk"));
        }
    }
}

对于旧版本:


是的,我们在我们的应用中执行此操作。只需在build.gradle中的android标记中添加以下内容:

android {
    applicationVariants.all { variant ->
        def oldFile = variant.outputFile
        def newPath = oldFile.name.replace(".apk", "${variant.versionName}.apk")
        variant.outputFile = new File(oldFile.parentFile, newPath)
    }
}

答案 1 :(得分:5)

kcoppock的回答是正确的,但有一个小错字。 它应该是:

android {
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.outputFile = new File(output.outputFile.parentFile,
                    output.outputFile.name.replace(".apk", "${variant.versionName}.apk"));
        }
    }
}

(我写这个作为答案,因为我不具备发表评论的声誉)