1. 程式人生 > >Android打包生成自定義檔名配置

Android打包生成自定義檔名配置

Android Studio在打包的時候會根據選擇的Build Variant是Debug和Release預設生成app-debug.apk或者app-release.apk

這樣其實感覺很不好,我們在實際開發中經常在上線前會提測很多測試包(beta版),測試完成後會出一個生產環境的包或者說上線包(release版)。有時候一個專案會設定很多的渠道,多渠道打包的命名也很麻煩,如果按照系統預設的打包命名方式,那麼每次出包我們就需要手動修改檔名,非常麻煩。

因此我們可以動態設定打包的檔名,這樣每次打出的包的檔名都不一樣,非常清晰,一目瞭然。

怎麼做?

只要在moudlebuild.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