3.0更新后,Gradle versionName和versionCode无法正常工作

时间:2017-10-28 14:40:06

标签: android build.gradle

    flavorDimensions "app"
    productFlavors {
        dev {
            resValue "string", "base_url", "http://mydevurl/"
            dimension "app"
        }
        prod {
            resValue "string", "base_url", "http://myprodurl/"
            dimension "app"
        }
    }
    applicationVariants.all { variant ->
        def flavor = variant.mergedFlavor
        def versionName
        if (variant.buildType.isDebuggable()) {
            versionName = "debug_0.1.1"
        }else{
            versionName = "0.1.1"
        }
        flavor.versionName = versionName
        flavor.versionCode = 50
    }

以上gradle设置工作正常,直到Gradle 3.0更新。无法在推荐的网站上找到任何相关内容。如何根据此新flavorDimension更改管理此动态版本控制?

1 个答案:

答案 0 :(得分:11)

您可以使用VariantOutput.setVersionCodeOverride()和VariantOutput.setVersionNameOverride()以3.0 Android gradle插件动态设置versionCode和versionName。

对于您的项目,这看起来像:

applicationVariants.all { variant ->
    def flavor = variant.mergedFlavor
    def versionName
    if (variant.buildType.isDebuggable()) {
        versionName = "debug_0.1.1"
    }else{
        versionName = "0.1.1"
    }
    flavor.versionName = versionName
    flavor.versionCode = 50
    variant.outputs.all { output ->
        output.setVersionNameOverride(versionName)
        output.setVersionCodeOverride(50)
    }       
}

参考:https://issuetracker.google.com/issues/63785806#comment6