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

效果

相关推荐
白泽_hunter12 小时前
项目里最常见的 5 个 this 指向坑:从规则到实战彻底讲透
前端
宿67412 小时前
vue3-pinia
前端·vue.js
白泽_hunter12 小时前
搞懂 JS 数据类型:从 typeof 到手写完整类型判断,一张图理清
前端
日光倾13 小时前
TypeScript 随手记 —— 1
前端·javascript·typescript
又见情义13 小时前
RK3568 Android 13 SDK 开机自动开启共享热点实践
android
自学it的攻城狮13 小时前
elpis-core ,koa实现的系统底座, 沉淀80% 的通用能力,剩下20% 用于定制化开发
前端
换个号退隐江湖i13 小时前
LLM 调试日志刷屏怎么办?用 tee 边看边存
linux
DYWorker00114 小时前
搭建嵌入式Linux虚拟机开发环境
linux
weipt14 小时前
从ollama到llama.cpp
linux·服务器·llama
mmsx14 小时前
return false 不是拦截:一次按键触发两个动作的事件冒泡陷阱
android·bug