Gradle:如何仅为特定风味定义构建类型?

时间:2016-03-21 02:31:13

标签: android android-studio gradle

我一直在使用gradle为Android应用程序为不同公司创建不同的构建变体。

例如,我有构建风味:

  • 公司1
  • Company2的

然后我有构建类型:

  • 生产
  • 预览
  • 开发

所以这将创建6个构建变体:

  • Company1Production
  • Company1Preview
  • Company1Development
  • Company2Production
  • Company2Preview
  • Company2Development

所以问题是: 实际上,我不需要公司2的开发构建类型,我只需要公司1。

有没有办法可以指定只有公司1有开发构建类型?

我的项目中有很多公司,有些构建类型对这些公司没有意义,而且会让想要构建应用程序的人感到困惑。

2 个答案:

答案 0 :(得分:8)

要回答我自己的问题,我在Gradle Plugin User Guide

上找到了相关文档

过滤变体

添加尺寸和风味时,最终可能会出现无意义的变体。例如,您可以定义使用Web API的风格和使用硬编码假数据的风格,以加快测试速度。第二种风格仅适用于开发,但不适用于发布版本。您可以使用variantFilter闭包删除此变体,如下所示:

android {
    productFlavors {
        realData
        fakeData
    }

    variantFilter { variant ->
        def names = variant.flavors*.name

        if (names.contains("fakeData") && variant.buildType.name == "release") {
            variant.ignore = true
        }
    }
}

使用上面的配置,您的项目将只有三个变体:

  • realDataDebug

  • realDataRelease

  • fakeDataDebug

答案 1 :(得分:-1)

您无法停止Android插件创建所有构建的矩阵,但如果构建无效,则可能导致构建失败。例如,如果您不希望Flavor2 Debug构建工作,您可以像这样停止它们:

conn:execute('another parameter',[[ 'MySQLSTATEMENT' ]]).