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

效果

相关推荐
FlightYe几秒前
视界原理之2D视频(二):视频文件里有什么
android·linux·网络·c++·ffmpeg·音视频·aac
IT_陈寒1 分钟前
JavaScript闭包的这个坑,我居然今天才爬出来
前端·人工智能·后端
可乐鸡翅yeah_2 分钟前
hls.js 切换多个视频源,新手开发常见踩坑
开发语言·前端·javascript·ios·ffmpeg·音视频·safari
葡萄城技术团队6 分钟前
复制走的是数字,留下的是身份:Web 表格里被忽视的数据断层
前端
传奇开心果编程7 分钟前
【Flutter入门练中学】第8课:动画与过渡
android·学习·flutter·ui·ios
kyriewen9 分钟前
我实测了前端日期的 5 个坑:差 8 小时只是开始
前端·javascript·程序员
测试运维日常笔记16 分钟前
大模型应用专项测试指南:从 Prompt、RAG 到 Agent 的完整链路
前端·prompt
计算机魔术师43 分钟前
没有人告诉他们要这么做——AI 智能体自己学会了"组团"越狱
前端
a努力。1 小时前
LangChain Agent消息链路全解析
java·前端·javascript
今年下半年1 小时前
【前端】ant-design-vue 表格「行、列都动态」的处理方案
前端·javascript·vue.js