完美处理 Android App 的 apk 输出路径与文件名

实现代码

复制代码
buildTypes {

        // ...
    
        
        applicationVariants.all {
            variant ->
                variant.outputs.all {
                    Calendar calendar = Calendar.getInstance(Locale.CHINA);
                    def buildDate = String.format(Locale.CHINA, "%04d%02d%02d", calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH))
                    def versionName = variant.versionName
                    def versionCode = variant.versionCode
                    //项目名-版本名-版本号-release/debug.apk
                    if (variant.buildType.name.equals('release')) {
                        variant.getPackageApplication().outputDirectory = new File("ApkOutputs/release")
                        outputFileName = "${rootProject.getName()}-v${versionName}-${versionCode}-${buildDate}-release.apk"
                    } else {
                        variant.getPackageApplication().outputDirectory = new File("ApkOutputs/debug")
                        outputFileName = "${rootProject.getName()}-v${versionName}-${versionCode}-${buildDate}-debug.apk"
                    }
                }
        }
    }

效果

相关推荐
叶羽西2 分钟前
查Google Android某个子仓库的修改情况
android
C_心欲无痕3 分钟前
nodejs - express:流行的 Web 应用框架
前端·node.js·express
sophie旭4 分钟前
webpack异步加载原理梳理解构
前端·javascript·webpack
wdfk_prog4 分钟前
[Linux]学习笔记系列 -- [fs]pipe
linux·笔记·学习
小小荧5 分钟前
Vue 原生渲染真要来了?Lynx引擎首次跑通Vue
前端·javascript
a176029317577 分钟前
3DS模拟器 Azahar模拟器最新版 安卓汉化中文版+PC版附3DS中文游戏资源全集+3DS密匙key和字库
android·游戏
oMcLin9 分钟前
Ubuntu 22.04 系统中不明原因的磁盘 I/O 高负载:如何利用 iotop 和 systemd 排查优化
linux·运维·ubuntu
fengyehongWorld12 分钟前
Linux systemd 与 systemctl 命令
linux·运维·服务器
千寻girling14 分钟前
面试官 : ” 说一下 Vue 中的 setup 中的 props 和 context “
前端·vue.js·面试
KLW7515 分钟前
vue中 v-cloak指令
前端·javascript·vue.js