我的产品有多种产品口味,如:
buildTypes {
debug {
}
release {
}
}
productFlavors {
flavor1 {
buildConfigField "String" "country" "se"
buildConfigField "String" "language" "sv-SE"
buildConfigField "String" "appName" "Flavor1"
}
flavor2 {
buildConfigField "String" "country" "se"
buildConfigField "String" "language" "sv-SE"
buildConfigField "String" "appName" "Flavor2"
}
flavor3 {
buildConfigField "String" "country" "se"
buildConfigField "String" "language" "sv-SE"
buildConfigField "String" "appName" "Flavor3"
}
flavor4 {
buildConfigField "String" "country" "se"
buildConfigField "String" "language" "sv-SE"
buildConfigField "String" "appName" "Flavor4"
}
flavor5 {
buildConfigField "String" "country" "se"
buildConfigField "String" "language" "no-NO"
buildConfigField "String" "appName" "Flavor5"
}
}
我更喜欢具有所有属性的公共部分,并且只覆盖那些不同的部分。这可能吗?
我还想将所有风格(也许是buildTypes)放在它自己的文件中,以使其更具可读性。因此,每当你必须改变一种味道时,你可以很容易地在它自己的文件中找到它,而不必滚动数千行,如果我将所有的味道和buildTypes与主构建文件中的所有其他部分一起使用。
答案 0 :(得分:51)
Selvin是正确的,使用defaultConfig
关闭 - 没有更简洁的方法!在下面的示例中,第1节,第2节和第2节。 5会将默认国家/地区和语言设置为de
。香精3& 4用他们自己的语言覆盖它。
defaultConfig {
buildConfigField "String", "country", "de"
buildConfigField "String", "language", "de"
}
buildTypes {
debug {
}
release {
}
}
productFlavors {
flavor1 {
buildConfigField "String", "appName", "Flavor1"
}
flavor2 {
buildConfigField "String", "appName", "Flavor2"
}
flavor3 {
buildConfigField "String", "country", "uk"
buildConfigField "String", "language", "en_GB"
buildConfigField "String", "appName", "Flavor3"
}
flavor4 {
buildConfigField "String", "country", "fr"
buildConfigField "String", "language", "fr"
buildConfigField "String", "appName", "Flavor4"
}
flavor5 {
buildConfigField "String", "appName", name.capitalize()
}
}
注意强>
只是一个FYI,您可以使用name.capitalize()
来改变任何风味的名称,例如: flavor5
使用Flavor5
方法将应用名称capitalize()
添加到应用名称中 - 这将使字符串中的第一个字符大写。但是,这个必须才有风味,而不是defaultConfig