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

效果

相关推荐
冲!!6 分钟前
使用nvm查看/安装node版本
前端·node.js·node·nvm
LilyCoder31 分钟前
HTML5二十四节气网站源码
前端·javascript·html·html5
Bruce_Liuxiaowei44 分钟前
跨站脚本攻击(XSS)高级绕过技术与防御方案
前端·网络安全·xss
EF@蛐蛐堂1 小时前
【vue3】v-model 的 “新玩法“
前端·javascript·vue.js
两个月菜鸟1 小时前
vue+微信小程序 五角星
前端·vue.js·微信小程序
獭.獭.1 小时前
Linux -- 文件【下】
linux·服务器·文件系统·软硬链接·inode·ext2
GISer_Jing2 小时前
React手撕组件和Hooks总结
前端·react.js·前端框架
破刺不会编程3 小时前
socket编程UDP
linux·运维·服务器·网络·c++·网络协议·udp
来来走走3 小时前
Flutter开发 网络请求
android·flutter
Warren986 小时前
Lua 脚本在 Redis 中的应用
java·前端·网络·vue.js·redis·junit·lua