匕首2:无法解析匕首成分的符号

时间:2016-05-30 14:01:05

标签: android dependency-injection dagger-2

我想练习这个Dagger 2 Vehicle Motor示例。

除了我的gradel.build:

之外,我在教程中做了一切
Example: http://example.com/~username/p1/p2/p3

Array
(
    [0] => p1
    [1] => p2
    [2] => p3
)

然后我得到了

  

错误:找不到符号变量Dagger_VehicleComponent

那里有什么问题?(同样没有' _'下划线)

3 个答案:

答案 0 :(得分:2)

另一个版本解决了它:

compile 'com.google.dagger:dagger:2.2'
apt 'com.google.dagger:dagger-compiler:2.2'
provided 'javax.annotation:jsr250-api:1.0'

答案 1 :(得分:0)

  1. 使用DaggerVehicleComponent
  2. 更改Dagger_VehicleComponent
  3. 清理并重建您的项目
  4. 导入DaggerVehicleComponent类

答案 2 :(得分:0)

我花了一些时间来弄明白这一点。但我找到了原因(至少在我身边) 我从零开始创建了一个项目,之后我试图设置基本的组件/工具,直到遇到这个问题。

阅读其他答案我发现DaggerApplicationComponent类是由编译器自动生成的,然后我想,为什么IDE无法“找到”这个类? 答案是显而易见的......你得到它,是因为项目没有编译,如果场景与我的相同,这里是解决这个问题的步骤。

1)打开终端并转到项目路径(或者只是在Android Studio中打开终端)

2)清理项目 ./gradlew clean

3)构建项目 ./gradlew build

注意:如果此时你注意到该项目没有编译......宾果!这可能是真正的问题。然后按照以下步骤操作:

4)打开gradle并添加buildToolsVersion '23 .0.1'并且非常重要必须启用multiDexEnabled true 这就是我在app模块中的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。

希望这为别人节省时间!