完美处理 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 分钟前
Hermes Agent 全栈安装、配置与Web端架构深度解析(官方命令版·最终优化)
前端·架构·hermes
早期的虫儿有鸟吃2 分钟前
Vue3
前端·javascript·vue.js
hqk14 分钟前
我给 AI 造了一个原型工具:AIWireframeViewer V1
前端·ai编程·vibecoding
zhangphil15 分钟前
Android RecyclerView图像类ViewHolder离屏缓存数量直接增加Java/View对象内存,间接增加Graphics/GL内存
android
库玛西15 分钟前
深入剖析 Linux 线程机制与分页式存储管理
linux·服务器·c++·笔记
Highcharts.js22 分钟前
商业授权与开源图表库如何选择?
前端·javascript·开源·highcharts·chart.js·echarts.js
春卷同学29 分钟前
HarmonyOS掌上记账APP开发实践第18篇:编译时优化与 ArkTS 语法限制 — 提升应用性能的编码规范
linux·运维·ubuntu
工具派32 分钟前
写代码时,我把这个本地 AI Commit Message 生成器接进了工作流
前端·后端
Dovis(誓平步青云)41 分钟前
《 AI直连数据库落地实践:基于MCP协议打通开发工具与数据库全链路运维分析》
大数据·linux·运维·数据库·人工智能·架构
众少成多积小致巨42 分钟前
Android C++ 编码规范指南
android·c++·google