无法解析符号DaggerApplicationComponent

时间:2018-04-01 20:03:18

标签: android dagger-2

我在Java中使用Dagger2,并且“在我的应用程序中无法解决符号DaggerApplicationComponent错误”。似乎依赖项存在问题。任何帮助将非常感激。 我的完整代码在这里 - https://github.com/rohitku860/AndroidMvpDagger2

这是我的应用程序渐变与依赖:

 apply plugin: 'com.android.application'
    android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.android.androidmvpdagger2"
        minSdkVersion 16
        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'
        }
    }
}

    dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    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'
    implementation 'com.google.dagger:dagger:2.13'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.13'
    implementation 'com.jakewharton:butterknife:8.5.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

}

这是项目一:

        buildscript {

        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.0'
        }
    }

        allprojects {
        repositories {
            google()
            jcenter()
        }
    }



           task clean(type: Delete) {
            delete rootProject.buildDir
        }

3 个答案:

答案 0 :(得分:4)

此错误与您的Gradle配置无关。

DaggerApplicationComponent是Dagger为您定义的ApplicationComponent接口生成的类。如果代码生成过程中出现任何错误(例如,缺少@Provides方法),Dagger将不会生成DaggerApplicationComponent,您将收到此错误。

您需要做的是阅读AndroidStudio中的整个错误输出,并尝试了解Dagger失败的原因。

当项目文件中缺少某些import语句时,我也遇到了非常讨厌的行为。在这些情况下,Dagger会失败,但不会告诉你究竟是什么问题,你需要自己去寻找它。

如果您需要进一步的帮助,请将构建错误输出附加到问题中。

答案 1 :(得分:2)

正确配置Dagger可解决此问题。

更新(2020年3月29日)

build.gradle块内的应用级 dependencies内,添加以下行:

     //dagger2
     api 'com.google.dagger:dagger:2.24'
     api 'com.google.dagger:dagger-android:2.24'
     api 'com.google.dagger:dagger-android-support:2.24'

     annotationProcessor 'com.google.dagger:dagger-compiler:2.24'
     kapt 'com.google.dagger:dagger-compiler:2.24'

     annotationProcessor 'com.google.dagger:dagger-android-processor:2.24'
     kapt 'com.google.dagger:dagger-android-processor:2.24'

     compileOnly 'javax.annotation:jsr250-api:1.0'
     implementation 'javax.inject:javax.inject:1'

应用级android内,

build.gradle

应用程序级别 kapt { generateStubs = true } 顶部处,以完全低于顺序的方式进行操作。

build.gradle

最后,您需要按照下面的屏幕快照中的说明配置注释过程。您可以进行apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android-extensions' 搜索File>Other Settings>Settings for New Projects>

此后,请从菜单"Annotation processor"中进行操作。你完成了!

测试:

Build > Rebuild

现在,您可以使用在编译时为Applicati @Component public interface ApplicationComponent { } nComponent接口生成的DaggerApplicationComponent

o

答案 2 :(得分:1)

对此有一个简单的解决方案,只需重建项目,它就可以工作