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

效果

相关推荐
坤坤子吖11 分钟前
Linux 线程同步与互斥——条件变量与线程同步
linux·开发语言·c++·笔记·学习
志尊宝19 分钟前
AI原生前端开发(011):Chrome 148+内置Gemini Nano入门
前端·chrome·ai-native
张文君28 分钟前
vmware克隆后ubuntu26.04 ip怎么更改
linux·运维·服务器
Liu.77434 分钟前
uniapp swiper 常见问题及修复
前端·uni-app
u01110267534 分钟前
图片生成任务的日志记录与敏感信息取舍
前端·图像处理·算法·ai作画
蒸鱼Yuzheng37 分钟前
移动游戏功耗与能效归因:帧率、画质、温控和续航如何一起评估
android·性能测试·功耗优化·游戏性能·温控
2402_882893861 小时前
Linux进程控制(上):fork、写时拷贝、进程终止与进程等待,一篇吃透!
linux·进程·fork·写时拷贝
梦想很大很大1 小时前
重新思考 Workrun:AI 时代,我们还需要手动编排 Workflow 吗?
前端·人工智能·后端
小羊没烦恼!1 小时前
深入浅出SQL Server中的死锁
java·开发语言·前端·数据库·后端·spring·c#