- 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/
我正在构建一个使用 Android 库作为主要代码源的应用程序。然后我有多个应用程序使用该库;这些应用程序将具有相同的代码,但配置字段不同,例如端点等。 为了实现这一点,我想我可以在我的库的 buil
在我的 Android Studio 项目中有两个 build configuration 和一些 buildConfigField: buildTypes { def SERVER_
这个语法有什么问题?我收到 Gradle DSL 方法未找到:'buildConfigFields()' 错误。 android { compileSdkVersion 23 buil
这不起作用,因为在生成的 BuildConfig 中, STORE最终在 UNLOCKED 之前被定义和 PLAYSTORE .我怎样才能做到这一点? build.gradle android {
我想定义一个构建配置文件,我可以在其中使用自己在 gradle 脚本中定义的变量: def someVar = 512 android { ... buildConfigField 'int'
build.gradle(模块): productFlavors { mytest { ... buildConfigField "boolean", "SHO
这是我尝试在 Gradle 中为我的 Android 应用程序执行的操作的极其简化的版本: android { buildTypes { debug {
我正在 Android Studio 中构建一个库,并希望将一个名为 performance 的 BuildConfigField bool 值设置为 true 以进行性能构建。但是,它返回 fals
我在 BuildConfig 中定义了一个特定字段,用于在运行时获取 URL。因此,对于每种构建类型,我使用不同的字符串: prod { buildConfigField "S
我试图在我的 productFlavor block 中设置一个 buildConfigField,然后在我的 gradle 构建文件中的其他地方引用该字段,这样我就可以在为我的 apk 构建名称时使
在我的 android{} 部分,我尝试为可能免费和付费的应用程序放置两种不同的构建类型。 遗憾的是我遇到了 gradle 错误: Gradle 'android-Transport' project
我正在尝试根据flavor + buildType 定义一个buildConfigVariable。理想情况下,这就是我想要的 productFlavors { strawberry {
我正在使用 Gradle 构建我的 Android 应用程序。我正在尝试根据构建类型(发布或调试)使用一些标志。 我的 Gradle 文件如下所示: android { buildTypes
我遇到了这个 gradle 错误 错误:(21, 0) Gradle DSL 方法未找到:'buildConfigField()'可能的原因: The project 'Sunshine' may b
我试图尽可能多地覆盖 Kotlin Android 库 我遇到了一个关于自定义 BuildConfig 变量的问题,更广为人知的是 buildConfigField . 我想模拟这个变量来测试 tru
我正在浏览开源应用程序 here并在 this 中看到了这行代码文件: buildConfigField "String", "DRIBBBLE_CLIENT_ID", "\"${dribbble_c
我已经使用 gradle(Android Project) 设置了一些自定义构建任务,现在这些任务工作正常。此任务的示例: TEST { buildConfigField "String",
如题,我的gradle版本是2.10,像这样: ... distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-a
我了解“如何”使用它们,但想知道“何时”使用它们。对于像为不同环境使用单独的 KEY 这样的情况,我们可以使用所有提到的三个。所以,我很想知道为什么要用三件事情来做同样的事情,以及它们是否适用于不同的
给定以下配置: productFlavors { normal { applicationId "com.app" } mock { applicationId "com.
我是一名优秀的程序员,十分优秀!