Android - Gradle中的多风格版本

时间:2015-11-18 17:00:03

标签: android gradle android-productflavors

我无法在SO上找到任何解决方案,所以我只是问它:

例如,我的项目有N个客户。每个客户都有一个风味,并希望改变不同类型的功能,每个功能都由不同的类表示。

结果我有一些矩阵:

           classA classB classC classD classE
flavorA       x
flavorB              x
flavorC                     x
flavorD                            x
flavorE                                   x

  *x - is a class customer wants to change

我如何在gradle中实现它,假设我不想使用反射,而flavorA的最终代码不应该包含来自其他版本的任何代码?将基本实现复制到所有版本也不是解决方案。

编辑:

也许我没有正确解释。每个flavor都需要用自己的实现替换相关的类,所有其他类必须保持不变。

1 个答案:

答案 0 :(得分:1)

如果我正确地理解你的问题,你可以这样做,就是在build.gradle文件中定义不同的风格,如:

flavorA {
}
flavorB {
} 

然后,如果你只有一个应该不同的文件,它需要具有相同的名称,但是在不同的flavor文件夹结构中,如下所示:

src/
|-- flavor1
|   `-- java
|       `-- class.java  // Custom class for customer 1
|-- flavor2
|   `-- java
|       `-- class.java  // Custom class for customer 2
`-- main  // Used for common code
    `-- java

必须将class.java命名为相同并从主文件夹移动。但内容将是不同的实现。在这种情况下,如果flavor1是build1,那么将只使用flavor1 / java / class.java,而对于flavor2则相同。