DaggerAppComponent - 未解决的引用

6

请帮我将Dagger 2连接到Kotlin。 我的应用程序的构建 gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "mobile.socialboards.com"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 19
        versionName '1.0'
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
        }
    }
    configurations {
        cleanedAnnotations
        compile.exclude group: 'org.jetbrains' , module:'annotations'
    }
    productFlavors {}
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
        freeCompilerArgs = ['-Xjvm-default=enable']
    }
    lintOptions {
        abortOnError false
    }
}

kapt {
    generateStubs = true
}

dependencies {
    ...

    implementation 'com.google.dagger:dagger-android:2.14.1'
    implementation 'com.google.dagger:dagger-android-support:2.14.1' // if you use the support libraries
    implementation "com.google.dagger:dagger:2.14.1"
    kapt 'com.google.dagger:dagger-android-processor:2.12'
    kapt "com.google.dagger:dagger-compiler:2.14.1"
    compileOnly "org.glassfish:javax.annotation:3.1.1"
}

apply plugin: 'com.google.gms.google-services'

我正在进行同步和重建,但是在我的应用程序 kotlin 类中,Android Studio 找不到 DaggerAppComponent。我查阅了很多文章,但仍然不理解出了什么问题。请帮忙!


我认为你可以删除com.google.dagger:dagger-android作为依赖项。你需要创建自己的AppComponent类。DaggerAppComponent类将会为你生成。 - chrjs
你有检查Logcat中的Dagger错误吗? - Jonik
@Jonik 如果编译出现问题,错误信息会在javac的输出中显示;而logcat通常是指正在运行的Android设备上的设备日志。 - Jeff Bowman
2个回答

3

我已经实现了完整的MVVM(Rx、Dagger、Kotlin),只需要这两个依赖项来使用Dagger:

 implementation 'com.google.dagger:dagger:2.12'
kapt 'com.google.dagger:dagger-compiler:2.12'

如果有任何问题,请告诉我!

文档建议使用2.x而不是特定版本2.12 - Jeff Bowman
是的兄弟,我知道有各种版本发布了。但我只是说“我已经实现了”。 - Ankit Patidar

2
相当简单,您需要创建ApplicationComponent,就像这样:
@Singleton
@Component(modules = [
    ApplicationModule::class,
])
interface ApplicationComponent {

    @Component.Builder
    interface Builder {
        @BindsInstance
        fun application(application: Application): Builder
           fun build(): ApplicationComponent
        }
}

我的代码示例使用DaggerAndroidInjections,请查看https://medium.com/@iammert/new-android-injector-with-dagger-2-part-1-8baa60152abe。 - egorikem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接