具有重复名称但不同尺寸的Gradle风味

时间:2016-01-20 10:10:30

标签: android gradle android-productflavors android-flavordimension

是否可以进行以下设置:

flavorDimension "production", "staging"

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

    production {
        dimension "production"
        ...
    }

    flavorOne {
        dimension "staging"
        ...
    }

    flavorOne {
        dimension "production"
        ...
    }

}

flavorOne存在两次,包含不同的设置,但也有不同的尺寸。

我需要的是一个带有生产和分段的风味flavorOne,以及用于flavorOneStaging和flavorOneProduction的res文件。 如果我这样做,我只看到flavorOneStagingDebug和flavorOneStagingRelease(release和debug是我的buildTypes),但也没有看到flavorOneProduction ..

我是否必须为每种组合创造一种风味? 分段和生产包含除res文件之外永远不会更改的数据,而flavorOne只是N中的一个。我不想创建N * 2风格以在生产和分期中获得各种风味? 任何解决方案?

3 个答案:

答案 0 :(得分:2)

您需要的是:

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

答案 1 :(得分:1)

AFAIK没有默认的方法来做到这一点 - 我遇到了同样的问题并解决了这个问题:

applicationVariants.all {variant - >

    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"'
    } 
}

我认为你得到了要点

答案 2 :(得分:0)

请阅读:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-flavor-variants

在那里你应该看到你应该反过来:将生产和舞台应用为风味,然后可以在它们上应用尺寸(如果它仍然需要)。