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

效果

相关推荐
han_2 分钟前
从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序
前端·javascript·面试
aPurpleBerry4 分钟前
React 01 目录结构、tsx 语法
前端·react.js
千百元11 分钟前
centos如何删除恶心定时任务
linux·运维·centos
jayaccc11 分钟前
微前端架构实战全解析
前端·架构
李坤林27 分钟前
Android Binder 详解(6) Binder 客户端的创建
android·binder
北京自在科技27 分钟前
苹果iOS 26.3实现跨安卓数据无缝迁移
android·ios·findmy
_道隐_32 分钟前
Android里面的layer、DisplayList和hardwarebuffer之间是什么关系
android
qingyun98936 分钟前
Web Components 实战:创建自定义比例条组件
前端
前端小超超36 分钟前
ionic + vue3 + capacitor遇到backButton问题
前端·javascript·vue.js
GIS之路37 分钟前
GDAL 空间关系解析
前端