1

是否可以进行以下设置:

flavorDimension "production", "staging"

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

    production {
        dimension "production"
        ...
    }

    flavorOne {
        dimension "staging"
        ...
    }

    flavorOne {
        dimension "production"
        ...
    }

}

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

我需要的是一个带有生产和暂存的风味 flavorOne,以及 flavorOneStaging 和 flavorOneProduction 的 res 文件。如果我这样做,我只会看到flavorOneStagingDebug 和flavorOneStagingRelease(发布和调试是我的buildTypes),但也看不到flavorOneProduction..

我必须为每种组合创造一种风味吗?暂存和生产包含除 res 文件之外永远不会更改的数据,而 flavorOne 只是 N 中的一个。我不想创建 N*2 风味以在生产和暂存中拥有每种风味?有什么解决办法吗?

4

3 回答 3

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
于 2016-04-21T15:14:15.310 回答
1

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

我想你明白要点

于 2016-01-20T16:36:12.190 回答
0

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

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

于 2016-01-20T10:38:39.350 回答