带有plus(),子模块覆盖和buildTypes的子图

时间:2014-05-16 17:51:55

标签: dependency-injection android-gradle dagger

使用ObjectGraph.plus()根据buildType创建包含不同模块的子图的优雅方法是什么? 我希望ObjectGraph.plus(new ModuleA())用于buildType A,ObjectGraph.plus(new ModuleB())用于buildType B(在我的情况下模块B覆盖模块A)。
我已经在做类似于包含的内容,但我无法想到用子图表来做到这一点。

1 个答案:

答案 0 :(得分:3)

在每个构建类型文件夹中放置一个类,该文件夹具有用于列出模块的静态方法。

// In src/release/java:
public class Modules {
  public static Object[] list() {
    return new Object[] {
        new ModuleA()
    };
  }
}

// In src/debug/java:
public class Modules {
  public static Object[] list() {
    return new Object[] {
        new ModuleA(),
        new ModuleB()
    };
  }
}

现在,当您致电.create().plus()时,您可以委托这些方法:

ObjectGraph.create(Modules.list());

您可以在http://github.com/JakeWharton/u2020

查看此实例