创建一种使用gradle扩展另一种味道的味道

时间:2018-02-09 14:37:35

标签: android gradle

我有一个Android应用程序有两种口味,免费和高级。我想创建另一种味道,flavorExt,它基于免费的味道,但有一些额外的功能。我使用gradle中的sourceSets选项完成了这项操作,如下所示:

   sourceSets {
        freeExt {
            java.srcDirs = sourceSets.free.java.srcDirs
            res.srcDirs = sourceSets.free.res.srcDirs
            resources.srcDirs = sourceSets.free.resources.srcDirs
        }
    }

现在我想为freeExt风格添加一些额外的功能,但我不知道这是否可行,如果可行,它是如何完成的。我已经将flavor源文件夹创建为app / src / freeExt / java / ...并在其中添加了必要的文件。我还在gradle的sourceSets条目中添加了以下行而没有成功:

java.srcDirs = sourceSets.free.java.srcDirs

我想在gradle中做什么?如果是这样,怎么办呢?

1 个答案:

答案 0 :(得分:2)

我建议为添加的功能创建第二个flavor维度。 You can find the documentation on multiple flavor dimensions here

你的build.gradle看起来像这样:

android {

    flavorDimensions "tier", "extras"

    productFlavors {
        free {
          dimension "tier"
          ...
        }

        full {
          dimension "tier"
          ...
        }

        withExtras {
          dimension "extras"
          ...
        }

        noExtras {
          dimension "extras"
          ...
        }
    }
}

Android Gradle插件将使用每个维度中每种风格的交叉产品生成变体。因此,您最终会得到freeWithExtrasfreeNoExtrasfullWithExtrasfullNoExtras。您不一定需要发布所有四种变体。