完美处理 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"
                    }
                }
        }
    }

效果

相关推荐
狂炫冰美式7 分钟前
3天,1人,从0到付费产品:AI时代个人开发者的生存指南
前端·人工智能·后端
一千柯橘11 分钟前
从摄影新手到三维光影师:Three.js 核心要素的故事
前端·three.js
雨白14 分钟前
Android实战:构建高可维护的日志系统
android
南囝coding24 分钟前
2025年CSS新特性大盘点
前端·css
c***V32329 分钟前
前端框架对比:10个主流框架优缺点分析
前端·前端框架
自由的好好干活33 分钟前
使用Qoder编写ztdaq的C#跨平台示例总结
linux·windows·c#·qoder
栀秋66642 分钟前
当我把 proto 打印出来那一刻,我懂了JS的原型链
前端·javascript
赖small强1 小时前
【Linux 网络基础】libwebsockets HTTPS 服务端实现机制详解
linux·网络·https·tls·libwebsockets
Cassie燁1 小时前
element-plus源码解读1——useNamespace
前端·vue.js
一直在学习的小白~1 小时前
npm发布脚手架流程
前端·npm·node.js