Android 如何让打包出来的apk或者aab文件名规则统一

2022-06-01  本文已影响0人  MeetYaKo

问题背景:

我们平时用Android Studio打包时候,如果不加规则限制,打包出来的名称都是

那么怎么让我们打包的时候更有观赏性,让名称一目了然呢?

解决方法

一般我们都是在build.gradle里面添加配置,目前有两种方法:

方法一:

android{
  applicationVariants.all { variant ->
        variant.outputs.all {
            def df = new SimpleDateFormat("MMdd")
            outputFileName = "xxx_${df.format(new Date())}_v${defaultConfig.versionName}_${variant.name}.apk"
        }
    }
}

输出结果:

xxx_0526_v1.0.0_release.apk

但是这种方法只针对打包apk文件,如果想要aab和apk同时生效,那么需要使用第二种方法

方法二:

android {
  ...
  defaultConfig {
    ...
     def df = new SimpleDateFormat("MMdd")
     setProperty("archivesBaseName", "xxx_${df.format(new Date())}_v${versionName}")
  }
}

输出结果:

xxx_0526_v1.0.0_release.apk
xxx_0526_v1.0.0_release.aab

有些同学还想要加上git的分支名称或者git的commit提交id,可以使用下面的方法

/**
 * 获取当前git分支名称,用于打包
 * @return 分支名称
 */
def gitBranch() {
    def branch = ""
    def proc = "git rev-parse --abbrev-ref HEAD".execute()
    proc.in.eachLine { line -> branch = line }
    proc.err.eachLine { line -> println line }
    proc.waitFor()
    branch
}
android {
  ...
  defaultConfig {
    ...
     resValue "string", "gitBranch", gitBranch()
     //获取当前git提交commitId
     def gitCommit = "git rev-parse --short HEAD".execute().text.trim()
     //时间格式化
     def df = new SimpleDateFormat("MMdd")
     //输出
     setProperty("archivesBaseName", "xxx_${gitBranch()}_${gitCommit}_${df.format(new Date())}_v${versionName}")
  }
}

输出结果:

xxx_master_46220b0e_0526_v1.0.0_release.apk
xxx_master_46220b0e_0526_v1.0.0_release.aab

两种方法,如果只需要打包apk文件,使用第一种就可以,如果需要apk和aab都需要打包,那么只使用第二种方法就可。

上一篇下一篇

猜你喜欢

热点阅读