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

Wes*_*ley 2 android gradle android-studio

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

例如,我有建立风味:

  • 公司1
  • Company2的

然后我有构建类型:

  • 生产
  • 预习
  • 发展

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

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

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

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

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

Wes*_*ley 8

要回答我自己的问题,我在Gradle Plugin用户指南中找到了相关文档

过滤变体

添加尺寸和风味时,最终可能会出现无意义的变体.例如,您可以定义使用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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • realDataDebug

  • realDataRelease

  • fakeDataDebug