问题背景:
我们平时用Android Studio打包时候,如果不加规则限制,打包出来的名称都是
- app-debug.apk
- app-release.apk
- app.aab
那么怎么让我们打包的时候更有观赏性,让名称一目了然呢?
解决方法
一般我们都是在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都需要打包,那么只使用第二种方法就可。
网友评论