良好做法 Gradle 味道 Class

Good Practice Gradle Flavors With Class

我正在寻找有关我应该如何使用 gradle 风格来为 Android 应用程序定义我的行为的信息。

Let's say I want to start a new activity in my flavor1 and not in my flavor2.

由于 gradle 不会相互覆盖 classes,

我必须在每个口味中定义Activity

app/src/
     |-> flavor1/java/<package>/Activity.java
     |-> flavor2/java/<package>/Activity.java
     |-> main/java/<package>

或者,在我的主文件夹中定义它并在常量 class 中使用枚举 return 如果我在我的 flavor1 或我的 flavor2

app/src/
     |-> flavor1/java/<package>/Constant.java
     |-> flavor2/java/<package>/Constant.java
     |-> main/java/<package>/Activity.java

我的猜测是我必须混合使用两种解决方案:

在我看来,这是使用 gradle 口味的最酷方式。但我想确定在最终实施之前没有其他最好的方法来处理它。

有没有人写过关于它的东西或者想发表自己的意见?我很想读你!

提前致谢!

您可以在每种风格上放置不同的 AndroidManifest 文件。例如,您可以在 flavor1 中定义(让我们称之为)可选 Activity,在 flavor1 中定义扩展可选 Activity 的 Class,您就完成了!请注意,flavor AndroidManifest 文件必须仅指定与主要 AndroidManifest 不同的内容:在这种情况下,您应该仅包含 <activity/>(当然在空的 <application/> 中)

如果您想避免 if (Constant.getFlavor() == flavor1),您可以创建一个工厂 class,然后 returns 该口味的正确意图 Activity。然后在每种口味中覆盖它。这避免了 if 语句污染代码。