android - Dagger2- 切换不同风格的依赖关系 : Android Studio

标签 android android-studio build dagger-2 android-build-flavors

我正在使用 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 扩展)。

最佳答案

使用特定风格的源集

例如,让我们考虑模拟生产 风格。创建 mockproduction 目录并将它们放在 main 旁边,在两个 中放置一个名为 Module 的单独类mockproduction 目录(包也必须相同)。这样,当您切换构建变体时,编译器将引用 mockproduction 风格中的 Module 类,允许您根据风格注入(inject)不同的实现。

在源集上查看此引用:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Sourcesets-and-Dependencies

这个答案也可能有帮助:How the flavor-specific variants are working?

关于android - Dagger2- 切换不同风格的依赖关系 : Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42475513/

相关文章:

javascript - Android/Javascript : Uncaught TypeError Object [object] has no method 'click' at null:1

iphone - 重新签署 IPA (iPhone)

java - 我们可以在另一个项目中添加一个可执行的 jar 文件作为依赖项吗?

java - 为什么我的应用程序在我单击按钮后就会关闭?

android - 如何显示列出所有文件夹而不是路径中的文件

android - 使用 AsyncTask 从错误的线程异常中调用

android - 升级 Android Studio 后项目出错(3.0 到 3.1 - 最终版本)

java - 当 GridView 中的文本为 null 或为空时如何显示图像,反之亦然?

android - 签署 APK 而不将 keystore 信息放入 build.gradle

python - Caffe:在 Windows 上安装修改后的 Caffe 项目