我无法在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都需要用自己的实现替换相关的类,所有其他类必须保持不变。
答案 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则相同。