Переименуйте варианты сборки в произвольное имя (например, feature1TestDebug в MyDebug) - PullRequest
0 голосов
/ 25 июня 2019

Часто у меня есть несколько разновидностей, чтобы различать dev и сборку релиза, а также включить или отключить функцию, основанную на разновидности.

Я, например. иметь 3 flavorDimensions с 2 записями каждая, это означает, что у меня будет 8 вариантов. Поэтому я отфильтровываю все ненужные варианты и получаю 3 основных варианта, таких как:

  • withFeature1DevNormalDebug
  • withFeature1PlayForTestRelease
  • withFeature1PlayNormalRelease

Что я хочу сделать:

Я хочу переименовать эти 3 варианта во что-то вроде следующего:

  • withFeature1DevNormalDebug => DevBuild
  • withFeature1PlayForTestRelease => TestReleaseBuild
  • withFeature1PlayNormalRelease => ReleaseBuild

Могу я как-нибудь это сделать? Я не могу переименовать аромат внутри variantFilter, потому что соответствующий атрибут name является атрибутом только для чтения. Есть ли способ переименовать имена вариантов сборки?

Код

Вот небольшой пример моих вкусов:

flavorDimensions "dimFeature1", "dimBuild", "dimTarget"

productFlavors {

    // 1) dimBuild
    dev {
        dimension "dimBuild"
        resConfigs('de', 'xhdpi')
    }

    play {
        dimension "dimBuild"
    }

    // 2) dimFeature1
    withFeature1 {
        dimension "dimFeature1"
        buildConfigField "boolean", "WITH_FEATURE_1", "true"
    }
    withoutFeature1 {
        dimension "dimFeature1"
        buildConfigField "boolean", "WITH_FEATURE_1", "false"
    }

    // 3) dimTarget
    normal {
        dimension "dimTarget"
        buildConfigField 'boolean', 'TEST', 'false'
    }

    forTest {
        dimension "dimTarget"
        applicationIdSuffix '.test'
        buildConfigField 'boolean', 'TEST', 'true'
    }
}

А это моя фильтрация вариантов сборки:

variantFilter { variant ->
    def names = variant.flavors*.name
    def buildTypeName = variant.buildType.name
    if (names.contains("dev") && buildTypeName == "release") {
        variant.ignore = true
    }
    if (names.contains("play") && buildTypeName == "debug") {
        variant.ignore = true
    }
    if (names.contains("forTest") && buildTypeName == "debug") {
        variant.ignore = true
    }

    // currently this feature is completely disabled!
    if (names.contains("withFeature1")) {
        variant.ignore = true
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...