Подтвердить что ты не робот

Android - изменить название версии аромата на основе типа сборки

Я хочу изменить имя версии для приложений, но только если это отладочная сборка.

(например, отладочные сборки будут иметь версии, такие как 1.0.1 D (DEBUG) 555 или 1.0.1 P (DEBUG) 555, однако я хочу, чтобы версии релизов имели только версию 1.0.1) Как я могу достичь этого?

В основном у меня есть эти типы сборки:

buildTypes {


    debug {
        versionNameSuffix " (DEBUG) " + mBuild

    }
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), file('proguard-project.txt')
        signingConfig signingConfigs.release
    }
}

и эти ароматы (для разных условий api):

productFlavors {
    dev {
        versionName = android.defaultConfig.versionName + " D"
    }
    prod {
        versionName = android.defaultConfig.versionName + " P"
    }
}

Есть ли способ сделать выпускные сборки без изменения названия версии продукта?

Я попытался установить динамическое имя версии с помощью

    buildTypes.each { buildType ->
    if(buildType.name == 'debug') {
        productFlavors.dev.versionName = android.defaultConfig.versionName + " D"
    }
}

но это приводит к

Не удалось найти свойство 'dev' в контейнере GroupableProductFlavorDsl.

4b9b3361

Ответ 1

После нескольких часов поиска мне удалось удалить все изменения, внесенные в имя версии для сборки релиза, используя этот код

applicationVariants.all { variant ->
    if (variant.buildType.name == 'release') {
        variant.mergedFlavor.versionName = android.defaultConfig.versionName;
    }
}

Ответ 2

Build Type должен переопределить Product Flavor. Попробуйте следующий.

buildTypes {

    release {
        versionName = android.defaultConfig.versionName
    }
}