Android的自定义工作流产品口味(Android Customize Workflow for

2019-10-18 18:39发布

我有一堆产品口味它们基本上是一个单一的应用程序的白色标签的应用。 然而,一旦在一段时间,有来自于一些味道,因为客户想要的东西略有不同的主流一些分歧。 到目前为止,我们一直在为编辑这些案件的代码,并使用面条代码(很多IFS的和别人的),以确保其他应用程序不破。 不用说,这是不是要做到这一点非常可扩展的(甚至是理智的)的方式。

一种选择是写活动类在productFlavor源文件夹,即src/flavor1/java/AnActivity.javasrc/flavor2/java/AnActivity.java等。由于productFlavor代码不能重写src/main类,这将需要被复制为每个新口味相同的类即使没有定制。 我真的不喜欢这个选项了。 这导致大量的冗余代码和类名最终被没有这么描述了,因为它们都必须有以覆盖他人,即使他们可能会做一些不同的东西相同的名称。

另一种选择是使用类似Dagger建立一个ObjectGraph和不同的实现注入意图。 举例来说,如果它的flavor1 ,按钮被点击X时,对于意图ActivityA注入,如果它是flavor2 ,对于意图ActivityB注入。

这似乎是一个更好的办法做到这一点,但我仍然不知道如何实现,将覆盖绑定默认类ObjectGraph

在实施或其他选项的任何想法? 我不是必然Dagger ,我刚开始寻找到依赖注入和测试,以便其他框架很好的工作。

Answer 1:

下面是我做什么?

src/flavor1/java/com/myapp/Modules.java

public class Modules {
  public static Object[] get(Application app) {
    return new Object[] {
      new MyAppModule(app),
      new Flavor1Module(app)
    };
  }
}

src/flavor2/java/com/myapp/Modules.java

public class Modules {
  public static Object[] get(Application app) {
    return new Object[] {
      new MyAppModule(app),
      new Flavor2Module(app)
    };
  }
}

src/main/java/com/myapp/MyAppApplication.java

ObjectGraph og = ObjectGraph.create(Modules.get(this));

MyAppModule有共同的依赖。 Flavor1ModuleFlavor2Module可以提供额外的依赖性或覆盖那些MyAppModule如果overrides=true



文章来源: Android Customize Workflow for Product Flavors