作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的产品具有多种产品 flavor ,例如:
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"
}
}
我更喜欢一个包含所有属性的公共(public)部分,并且只覆盖那些不同的部分。这可能吗?
我还想将所有风格(可能还有 buildTypes)放在它自己的文件中,以使其更具可读性。因此,每当您必须更改 flavor 时,您都可以轻松地在其自己的文件中找到它,而不必滚动数千行,如果我在主构建文件中拥有所有 flavor 和 buildTypes 以及所有其余部分,那将是这样。
最佳答案
Selvin 是正确的,使用 defaultConfig
闭包 - 没有更好的方法! 在以下示例中, flavor 1、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()
}
}
注意
仅供引用,您可以使用 name.capitalize()
来转换任何 flavor 的名称,例如使用 capitalize()
方法将 flavor5
插入到 Flavor5
的应用名称中 - 这会将字符串中的第一个字符大写。但是,这 必须 符合风格,而不是 defaultConfig
关于android - 有没有办法在 gradle 中有一个与 buildConfigField 和 resValue 共用的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25994149/
我是一名优秀的程序员,十分优秀!