android - 未创建 DaggerAppComponent

标签 android dagger-2 dagger

使用 dagger 2.10,我曾经能够通过以下方式创建应用程序组件

    sAppComponent = DaggerAppComponent.builder()
            .appModule(new AppModule(this))
            .sessionModule(new SessionModule())
            .netModule(new NetModule())
            .dataModule(new DataModule())
            .build();

我已经在使用 AndroidInjector 进行 Activity ,一切都很好。 现在我切换到2.11,我找不到创建应用程序组件的方法。 在 google tutorial我明白了:

DaggerYourApplicationComponent.create()
    .inject(this);

在Application的onCreate中添加。 在我的例子中 DaggerYourApplicationComponent = DaggerAppComponent。问题是不再创建 DaggerAppComponent 类。

我有:

public class App extends android.support.multidex.MultiDexApplication implements HasActivityInjector {
    @Inject DispatchingAndroidInjector<Activity> mDispatchingActivityInjector;
    @Override
    public void onCreate() {
        super.onCreate();

        sAppComponent = DaggerAppComponent.create().inject(this); //here the error

和:

@Singleton
@Component(modules = {
        AppModule.class,
        MainActivityModule.class,
        ...
})
public interface AppComponent {
        void inject(App app);
        ...
}

在我拥有的 build.gradle 文件中:

def daggerVer = 2.11
compile "com.google.dagger:dagger:$daggerVer"
compile "com.google.dagger:dagger-android-support:$daggerVer"
annotationProcessor "com.google.dagger:dagger-android-processor:$daggerVer"

最佳答案

使用下面列出的依赖项,一切正常:

如果您使用的是 Kotlin

apply plugin: 'kotlin-kapt'

dependencies {
    def daggerVer = 2.27 // or latest version

    implementation "com.google.dagger:dagger:$daggerVer"
    implementation "com.google.dagger:dagger-android-support:$daggerVer"
    kapt "com.google.dagger:dagger-android-processor:$daggerVer"
    kapt "com.google.dagger:dagger-compiler:$daggerVer"
}

如果您使用的是 Java:

dependencies {
    def daggerVer = 2.27 // or latest version

    implementation "com.google.dagger:dagger:$daggerVer"
    implementation "com.google.dagger:dagger-android-support:$daggerVer"
    annotationProcessor "com.google.dagger:dagger-android-processor:$daggerVer"
    annotationProcessor "com.google.dagger:dagger-compiler:$daggerVer"
}

google tutorial

您可以找到最新版本号here .

关于android - 未创建 DaggerAppComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44652204/

相关文章:

android - 如何使用 Dagger 为 Activity 和 fragment 以外的事物设置依赖注入(inject)?

android - 为什么Android会更改具有相同id的EditTexts的值?

android - Dagger 2 相互依赖问题

android - 以编程方式增加android map 缩放级别

java - Dagger2 - 组件在应用程序中保持为静态对象

android - 从 Dagger2 迁移到 Hilt

android - 如何通过 gradle 风格更改 Dagger 模块的注入(inject)?

android - Dagger 柄 : Difference between annotating a class @Singleton and a provides function @Singleton

android - navigator.geolocation.GetCurrentPosition 抛出 "The last location provider was disabled"错误

java - compileOptions 设置为 JavaVersion 1.8 导致 gradle 同步失败