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

效果

相关推荐
奔跑的架构师36 分钟前
[A-50]ARMv9/v8-DVFS系统架构
linux·arm开发·架构·系统架构·arm
迷途呀44 分钟前
CI/CD 自动化部署实践:让代码提交后自动上线
linux·运维·nginx·ci/cd·自动化
赴生-1 小时前
Liunx 操作系统 进程概念(上)
linux
binqian1 小时前
【linux】OpenSSH升级文档
linux·运维·网络
吴声子夜歌2 小时前
Shell编程——if条件语句
linux·运维·shell
一航jason2 小时前
Android平台推理框架及试用场景模型对比
android·人工智能·ai·架构·ai编程·llama
陈随易2 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
一航jason2 小时前
Android 端侧大模型推理框架对比
android·人工智能·ai·ai编程·llama·ai-native
Dawn-bit2 小时前
Linux 运维基础扩展:跳板机、堡垒机与物理服务器全流程
linux·运维·服务器·云计算·运维开发
新时代牛马2 小时前
Linux 定时任务:crontab、anacron 与systemd timer
linux·运维·服务器