代码之家  ›  专栏  ›  技术社区  ›  Rickless

错误:未解析的引用:DaggerAppComponent[重复]

  •  1
  • Rickless  · 技术社区  · 6 年前

    我已经面对这个问题三个小时了。我找不到任何合乎逻辑的理由来解释发生的事情。问题是,只有当我使用生成的 Dagger 课程及之后 Gradle Build 每个对这些类的引用都变为红色,我得到了一个错误:

    错误:未解析的引用:DaggerAppComponent

    但是,如果我把 App 类引用任何生成的 匕首 课程。生成过程已成功完成。我试着做清洁/重建/制作项目。但它不起作用。 有关我的环境的一些信息:
    Build.gradle :

    apply plugin: 'com.android.application'
    
    apply plugin: 'kotlin-android'
    
    apply plugin: 'kotlin-android-extensions'
    
    android {
        compileSdkVersion 26
        defaultConfig {
            applicationId "xxxxx"
            minSdkVersion 19
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        dataBinding {
            enabled = true
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    
        implementation "android.arch.lifecycle:extensions:1.1.0"
        implementation "android.arch.lifecycle:viewmodel:1.1.0"
        implementation "android.arch.lifecycle:livedata:1.1.0"
        implementation "android.arch.persistence.room:runtime:1.0.0"
        implementation "android.arch.lifecycle:runtime:1.1.0"
    
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support:design:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        implementation 'com.android.support:support-v4:26.1.0'
    
    
        kapt "android.arch.lifecycle:compiler:1.1.0"
        kapt "android.arch.persistence.room:compiler:1.0.0"
    
        kapt "com.google.dagger:dagger-compiler:2.8"
        compile "com.google.dagger:dagger:2.8"
        compile "com.google.dagger:dagger-android:2.8"
    
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }
    

    Kotlin版本: ext.kotlin_version = '1.1.51'
    Android Studio版本: 3.0.1

    中的依赖项部分 Build.Gradle 项目文件(不是应用程序模块):

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
    

    应用程序 类别:

    class App:Application() {
        private val component:AppComponent by lazy {
            DaggerAppComponent.builder()
                    .build()
        }
        override fun onCreate() {
            super.onCreate()
            component.inject(this)
        }
    }
    

    如果有人能找出问题所在,我们将不胜感激。
    P、 我还在学习 Dagger2 我是新手 Kotlin Native 总体发展。我来自 C# Xamarin 出身背景

    1 回复  |  直到 6 年前
        1
  •  3
  •   zsmb13    6 年前

    您似乎缺少kapt Gradle插件的应用程序,如 kapt documentation 。基本上,在现有插件之后添加:

    apply plugin: 'kotlin-kapt'
    

    (如果这有帮助,应将此问题标记为 this one )