Android - BuildTypes始终从调试中获取值

时间:2017-08-29 09:05:50

标签: android android-gradle

我生成签名apk时遇到问题。 当我生成发布时,apk总是给我版本名称和versionCode的QA值。

这是我的defaultConfig:

    def date = new Date()
    def df = new SimpleDateFormat("yyMMddHHmm")
    def dfName = new SimpleDateFormat("yy-MM-dd")
    df.setTimeZone(TimeZone.getTimeZone("UTC"))

    versionCode df.format(date).toInteger()
    versionName dfName.format(date)

这是我的buildType:

    buildTypes {
    debug {
        android.defaultConfig.versionCode 1
        android.defaultConfig.versionName "1"
    }
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 
       'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}

例如,当我使用release生成apk时,我获得versionCode,而versionName等于1,就像它应该在QA上

1 个答案:

答案 0 :(得分:1)

执行gradle任务时,正在评估版本代码和版本名称。因此,您不能在不同的构建类型中覆盖它,或者是正确的:每次设置它时都会全局覆盖它!

我认为您可以拦截任务并应用所需的代码:

android.applicationVariants.all { variant ->
    if (variant.buildType.isDebuggable()) {
        variant.mergedFlavor.versionCode = 1
        variant.mergedFlavor.versionName = "1"
    }
}