我正在使用 Dagger 2,并希望使用它为 Android Studio 中的不同构建风格注入(inject)不同的依赖项。
public class DemoApplication extends Application{
AppComponent component;
@Override
public void onCreate() {
super.onCreate();
component = DaggerAppComponent.builder().module(new Module()).build();
}
}
@Module
public class Module {
@Provides
@Singleton
public ClassA provideClassA(){
return new ClassA();
}
}
@Component (modules = {Module.class})
public interface AppComponent {
ClassA getClassA();
}
现在假设我希望在产品风格中返回 ClassA 的对象,而在调试风格中返回 ClassB 的对象(从 ClassA 扩展)。
最佳答案
使用特定风格的源集
例如,让我们考虑模拟 和生产 风格。创建 mock
和 production
目录并将它们放在 main
旁边,在两个 中放置一个名为
和 Module
的单独类mockproduction
目录(包也必须相同)。这样,当您切换构建变体时,编译器将引用 mock
或 production
风格中的 Module
类,允许您根据风格注入(inject)不同的实现。
在源集上查看此引用:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Sourcesets-and-Dependencies
关于android - Dagger2- 切换不同风格的依赖关系 : Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42475513/