DaggerAppComponent未创建

时间:2017-06-20 11:46:21

标签: android dagger

使用dagger 2.10,我曾经可以通过

创建应用程序组件
    sAppComponent = DaggerAppComponent.builder()
            .appModule(new AppModule(this))
            .sessionModule(new SessionModule())
            .netModule(new NetModule())
            .dataModule(new DataModule())
            .build();

我已经在使用AndroidInjector for Activities,一切都很好。 现在我切换到2.11,我找不到创建应用程序组件的方法。 在google tutorial我看到:

DaggerYourApplicationComponent.create()
    .inject(this);

将添加到应用程序的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"

4 个答案:

答案 0 :(得分:38)

好对不起噪音。我的愚蠢错误:当我切换到2.11时,我从google tutorial复制了build.gradle部分,其中依赖:

annotationProcessor "com.google.dagger:dagger-compiler:$daggerVer"

没有列出我不知道的原因。 下面列出的依赖项一切正常:

def daggerVer = 2.12 // 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"

如果您正在使用Kotlin

apply plugin: 'kotlin-kapt'

dependencies {
    def daggerVer = 2.12 // 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"
}

答案 1 :(得分:7)

Kotlin 中,我们必须添加 kapt 编译器插件才能使用Dagger 2.

在你的app gradle中,添加此插件

apply plugin: 'kotlin-kapt'

并添加依赖项,如下所示

dependencies
{
    implementation "com.google.dagger:dagger:$latest_version"
    kapt  "com.google.dagger:dagger-compiler:$latest_version"
    implementation "com.google.dagger:dagger-android:$latest_version"
    kapt  "com.google.dagger:dagger-android-processor:$latest_version"
    implementation "com.google.dagger:dagger-android-support:$latest_version"
    kapt  "com.google.dagger:dagger-android-support:2.12"
}
  

见Kotlin   Documentation

答案 2 :(得分:0)

Dagger2的最新版本仅支持Gradle中的以下设置: https://github.com/google/dagger#gradle

def daggerVer = 2.24 // or latest version
api "com.google.dagger:dagger:$daggerVer"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVer"
api "com.google.dagger:dagger-android:$daggerVer"
api "com.google.dagger:dagger-android-support:$daggerVer" // if you use the support libraries
annotationProcessor "com.google.dagger:dagger-android-processor:$daggerVer"

答案 3 :(得分:0)

就我而言(当前使用Kotlin)

我使用此构建包

  implementation 'com.google.dagger:dagger:2.24'
  annotationProcessor 'com.google.dagger:dagger-compiler:2.24'
  annotationProcessor 'com.google.dagger:dagger-android-processor:2.24'
  implementation 'com.google.dagger:dagger-android-support:2.24'

在同步gradle之后,

  1. 我退出了Android Studio(Command + Q)。

  2. 在“ app”文件夹中删除“ build”文件夹

  3. 重新打开Android Studio

DaggerAppComponent已创建。