Dagger 2: 无法解决dagger组件的符号问题。

7

我想要使用这个Dagger 2车辆引擎例子进行练习。

除了我的gradle.build文件之外,我已经按照那个教程做了一切准确的操作:

compile 'com.google.dagger:dagger:2.4'
apt 'com.google.dagger:dagger-compiler:2.4'
compile 'javax.annotation:javax.annotation-api:1.2'

但是我遇到了一个错误:

错误:找不到符号变量Dagger_VehicleComponent

出了什么问题?(没有下划线也一样)

3个回答

3
另一个版本已经解决了这个问题:
compile 'com.google.dagger:dagger:2.2'
apt 'com.google.dagger:dagger-compiler:2.2'
provided 'javax.annotation:jsr250-api:1.0'

0
花了我一段时间才弄明白这个问题。但是我找到了原因(至少在我的电脑上)。 我从头开始创建了一个项目,然后我试图设置基本组件/工具,直到我遇到了这个问题。
阅读其他答案,我发现DaggerApplicationComponent类是由编译器自动生成的,然后我想,为什么IDE无法“找到”这个类呢? 答案很明显...你猜对了,因为项目没有编译,如果情况与我的相同,则以下是解决此问题的步骤。
1)打开终端并转到您的项目路径(或者只需在Android Studio中打开终端)
2)清理项目 ./gradlew clean
3)构建项目 ./gradlew build
注意:如果到这一点您已经注意到项目没有编译... Bingo!那可能是真正的问题。然后按照以下步骤操作:
4)打开gradle并添加buildToolsVersion '23.0.1',非常重要的是启用multiDexEnabled true 这是我的应用程序模块中gradle的外观。
android {
    buildToolsVersion '23.0.1' // IMPORTANT
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.fixing.dagger"
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        multiDexEnabled true  // ALSO IMPORTANT
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

之后,您将能够导入DaggerApplicationComponent。

希望这能为其他人节省时间!


0
  1. 将 Dagger_VehicleComponent 改为 DaggerVehicleComponent
  2. 清理并重新构建您的项目
  3. 导入 DaggerVehicleComponent 类

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