android - Gradle:如何仅为特定口味定义构建类型?

标签 android android-studio gradle

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

例如我有构建风格:

  • 公司1
  • 公司2

然后我有构建类型:

  • 制作
  • 预览
  • 发展

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

  • 公司1生产
  • 公司1预览
  • 公司1发展
  • 公司2生产
  • 公司2预览
  • 公司发展

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

有没有一种方法可以指定只有公司 1 具有开发构建类型?

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

最佳答案

为了回答我自己的问题,我在 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
        }
    }
}

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

  • 真实数据调试

  • 真实数据发布

  • 假数据调试

关于android - Gradle:如何仅为特定口味定义构建类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122232/

相关文章:

Android Studio 组合图表崩溃

maven - Gradle无法解决Spring依赖关系

java - 在 Canvas 上展示广告

android - 可以使用 Netbeans 开发 Android 3.x 应用程序吗?

android - 无法在 Android studio 2.2.3 中找到工具 > Firebase

java - 从/res/raw 中的文本文件填充 Android Fragment 中的 TextView

android - MPAndroidchart 如何在 MarkerView 中显示标签?

android - Robolectric 为测试膨胀自定义 View

gradle - 如何修复 'Could not find method defaults()'?

Gradle::runtime.exclude group: 'org.apache.hadoop' 影响测试范围吗?