匕首2:无法解析匕首组件的符号

问题描述:

我想运用这个Dagger 2 Vehicle Motor示例。匕首2:无法解析匕首组件的符号

我做的一切确切就像在教程中,除了我gradel.build:

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

但后来我得到一个

error: cannot find symbol variable Dagger_VehicleComponent

哪些错误呢?(同样没有 '_' 下划线)

另一个版本解决了这个问题:

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

  1. 变化Dagger_VehicleComponent与DaggerVehicleComponent
  2. 清理和重建项目
  3. 进口DaggerVehicleComponent类

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

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

1)打开终端进入你的项目路径(或简单地在Android Studio中打开终端)

2)清洁工程 ./gradlew干净

3)建设项目 ./ gradlew build

注意:如果你已经注意到这个项目没有编译...宾果!这可能是真正的问题。然后按照下面的步骤:

4)打开gradle这个并添加buildToolsVersion '23 .0.1' 也是非常重要的,必须启用multiDexEnabled真正 这是我的应用程序模块中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。

希望这可以为别人节省时间!