Android打包生成自定義檔名配置
阿新 • • 發佈:2019-01-01
Android Studio在打包的時候會根據選擇的Build Variant是Debug和Release預設生成app-debug.apk
或者app-release.apk
。
這樣其實感覺很不好,我們在實際開發中經常在上線前會提測很多測試包(beta版),測試完成後會出一個生產環境的包或者說上線包(release版)。有時候一個專案會設定很多的渠道,多渠道打包的命名也很麻煩,如果按照系統預設的打包命名方式,那麼每次出包我們就需要手動修改檔名,非常麻煩。
因此我們可以動態設定打包的檔名,這樣每次打出的包的檔名都不一樣,非常清晰,一目瞭然。
怎麼做?
只要在moudle的build.gradle
在根節點新增
// 當前beta版本號
ext.build_number = "beta1";
// 顯示的時間格式,形如20170710
def releaseTime() {
return new Date().format("yyyyMMdd", TimeZone.getDefault());
}
在android節點中新增
android {
// 一定要寫在android節點中
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 顯示app名稱+當前版本號
def fileName = "Your App Name-V${variant.versionName}"
// 如果有渠道,顯示渠道名""
if (variant.flavorName!=""){
fileName = fileName + "-${variant.flavorName}"
}
// 加入打包時間
fileName = fileName + "-${releaseTime()}"
// 如果是debug版本,加入beta版本號
if ('debug'.equals(variant.buildType.name)) {
fileName = fileName + "-${build_number}.apk"
} else {
// 如果是release版本,直接顯示
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