Gradle ароматы с повторяющимися именами, но разным измерением

Возможно ли иметь следующую настройку:

flavorDimension "production", "staging"

productFlavors {
    staging {
        dimension "staging"
        ...
    }

    production {
        dimension "production"
        ...
    }

    flavorOne {
        dimension "staging"
        ...
    }

    flavorOne {
        dimension "production"
        ...
    }

}

flavourOne существует два раза и содержит разные настройки, но также и с разными размерами.

То, что мне нужно, это аромат flavour One с производством и подготовкой, а также файлы res для flavourOneStage и flavour One. Если я делаю это так, я вижу только flavournenetagg и flavournease Release (выпуск и отладка - мои buildTypes), но не flavourneneroduction..

Нужно ли создавать аромат для каждой комбинации? Подготовка и производство содержат данные, которые никогда не изменяются, за исключением файлов res и flavOne. Это только один из N. Я не хочу создавать N*2 вариантов, чтобы иметь каждый вариант в производстве и подготовке? Какие-либо решения?

3 ответа

Что вам нужно это:

flavorDimension "environment", "flavorType"

productFlavors {
    staging {
        dimension "environment"
        ...
    }

    production {
        dimension "environment"
        ...
    }

    flavorOne {
        dimension "flavorType"
        ...
    }

    flavorTwo {
        dimension "flavorType"
        ...
    }

}

Предполагая, что ваши типы сборки являются релизом и отладкой, это даст:

staging-flavorone-release.apk
staging-flavorone-debug.apk
staging-flavortwo-release.apk
staging-flavortwo-debug.apk
release-flavorone-release.apk
release-flavorone-debug.apk
release-flavortwo-release.apk
release-flavortwo-debug.apk

AFAIK нет способа сделать это по умолчанию - однажды у меня была такая же проблема, и я решил ее так:

applicationVariants.all {вариант ->

    def variantName = variant.name
    if (variantName == "flavorOneProduction") {
        variant.buildConfigField "String", "FOO",'"BAR"'
    } else if (variantName == "flavorOneStaging") {
        variant.buildConfigField "String", "FOO",'"BAR2"'
    } else if (variantName == "flavorTwoProduction") {
        variant.buildConfigField "String", "FOO",'"BAR3"'
    } else if (variantName == "flavorTwoStaging") {
        variant.buildConfigField "String", "FOO",'"BAR4"'
    } 
}

Я думаю, вы поняли суть

Пожалуйста, прочитайте: http://tools.android.com/tech-docs/new-build-system/user-guide

Там вы должны увидеть, что вам следует поступить иначе: использовать постановку и постановку в качестве ароматизаторов и, возможно, затем применить к ним размеры (если они все еще необходимы).

Другие вопросы по тегам