Android Studio在打包的时候会根据选择的Build Variant是Debug和Release默认生成app-debug.apk或者app-release.apk。
这样其实感觉很不好,我们在实际开发中经常在上线前会提测很多测试包(beta版),测试完成后会出一个生产环境的包或者说上线包(release版)。有时候一个项目会设置很多的渠道,多渠道打包的命名也很麻烦,如果按照系统默认的打包命名方式,那么每次出包我们就需要手动修改文件名,非常麻烦。
因此我们可以动态设置打包的文件名,这样每次打出的包的文件名都不一样,非常清晰,一目了然。
怎么做?
只要在moudle的build.gradle中进行如下设置即可。
在根节点添加
ext.build_number =
"beta1";
def releaseTime() {
return new Date().format(
"yyyyMMdd", TimeZone.getDefault());
}
在android节点中添加
android {
applicationVariants
.all { variant
->
variant
.outputs
.each { output
->
def outputFile
= output
.outputFile
if (outputFile
!= null && outputFile
.name
.endsWith(
'.apk')) {
def fileName
= "Your App Name-V${variant.versionName}"
if (variant
.flavorName
!=""){
fileName
= fileName
+ "-${variant.flavorName}"
}
fileName
= fileName
+ "-${releaseTime()}"
if (
'debug'.equals(variant
.buildType
.name)) {
fileName
= fileName
+ "-${build_number}.apk"
}
else {
fileName
= fileName
+ "-release.apk"
}
output
.outputFile
= new File(outputFile
.parent, fileName)
}
}
}
}
这样设置之后,打出的包的文件名就形如
Your App Name
-V1.0.0-20170710-beta1.apk
Your App Name
-V1.0.0-20170710-release.apk
Your App Name
-V1.2.1-20170710-渠道名称
-beta2.apk
Your App Name
-V1.2.1-20170710-渠道名称
-release.apk