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

nas*_*sch 11 android gradle

我发现了类似的问题,但没有什么能够解决我想做的事情.我正在使用Android Studio和gradle进行开发,我的构建文件中有几种风格,每种风格都有一个versionName.有没有办法在APK文件中包含flavor的版本名称?

kco*_*ock 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"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

从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"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于旧版本:


是的,我们在我们的应用程序中执行此操作.只需在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)
    }
}
Run Code Online (Sandbox Code Playgroud)


ptx*_*ptx 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"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

(我写这个作为答案,因为我没有发表评论的声誉)