1、定义versionName基础前缀

android {
    defaultConfig {
        ...
        versionName "APP-"
    }
    
    ...
}

默认配置中填写需要的versionName前缀用于拼接。

2、定义聚道包维度

android {
    ...

    //聚道包维度
    flavorDimensions 'default', 'custom'
    productFlavors {
        one {
            dimension "default"
            versionNameSuffix "O"
            //定义变量
            manifestPlaceholders = [
                    PRODUCT_FLAVORS: 'ONE'
            ]
        }

        three {
            dimension "default"
            versionNameSuffix "T"
            //定义变量
            manifestPlaceholders = [
                    PRODUCT_FLAVORS: 'THREE'
            ]

        }

        /标准版
        standard {
            dimension "custom"
            versionNameSuffix "S"
        }

        //单机版
        standAlone{
            dimension "custom"
            versionNameSuffix "SA"
        }

    }

    ...

}

根据实际需要创建多种聚道包维度;

示例中将会打出4种安装包:oneStandardoneStandAlonethreeStandardthreeStandAlone

3、添加编译生成versionName

android {
    ...

    // 动态设置最终的版本号
    android.applicationVariants.configureEach { variant ->
        // 根据flavor的versionNameSuffix和默认的versionName设置完整versionName
        def baseVersionName = defaultConfig.versionName
        def flavorSuffixes = variant.productFlavors.collect { it.versionNameSuffix }.join("")
        // 获取当前时间并格式化
        def dateFormat = 'yyMMddHHmm'
        def currentTime = new Date().format(dateFormat)

        variant.outputs.configureEach { output ->
            //设置最终的版本号
            output.versionNameOverride = ("${baseVersionName}${flavorSuffixes}${currentTime}")
            //设置输出安装包名称
            output.outputFileName = "${versionName}.apk"
        }
    }

    ...
}

最终版本号形式:APP-OS2410201345.apk

此设置将会使打包出的apk名称以及应用的versionName都设置为APP-OS2410201345.apk