【问题标题】:Android - multi-flavor builds in GradleAndroid - Gradle 中的多风格构建
【发布时间】:2015-11-18 17:00:02
【问题描述】:

我在 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

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

编辑:

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

【问题讨论】:

  • 这些类是否仅由风味源集中的类使用?还是需要从主源集中引用它们?

标签: android gradle android-productflavors


【解决方案1】:

如果我正确理解了您的问题,您的做法是在 build.gradle 文件中定义不同的风格,例如:

flavorA {
}
flavorB {
} 

那么,如果您只有 1 个应该不同的文件,则它需要具有相同的名称,但具有不同的文件夹结构,如下所示:

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 必须同名并从主文件夹中移出。但内容将是不同的实现。在这种情况下,如果风味 1 已构建并且风味 2 相同,则只会使用风味 1/java/class.java。

【讨论】:

  • 一个文件和两个版本没关系,但如果你有 10 多个版本并且每个版本修改不同的文件,那么重复的文件就会很多。
  • 我认为不同风格的类应该是不同的实现,所以它们无论如何都需要是不同的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 2015-05-15
  • 2014-02-13
  • 1970-01-01
相关资源
最近更新 更多