是否可以进行以下设置:
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风格以在生产和分期中获得各种风味? 任何解决方案?
答案 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
在那里你应该看到你应该反过来:将生产和舞台应用为风味,然后可以在它们上应用尺寸(如果它仍然需要)。