匕首 2:无法解析匕首组件的符号
Dagger 2 : Cannot resolve symbol for dagger component
我想练习这个 Dagger 2 Vehicle Motor 例子。
除了我的 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'
- 将 Dagger_VehicleComponent 更改为 DaggerVehicleComponent
- 清理并重建您的项目
- 导入 DaggerVehicleComponent class
我花了一段时间才弄明白这一点。但我找到了原因(至少在我这边)
我从头开始创建了一个项目,之后我尝试设置基本的 components/tools 直到遇到这个问题。
阅读其他答案我发现 DaggerApplicationComponent class 是由编译器自动生成的,然后我想,为什么 IDE 不能 "find" 这个 class?
答案很明显......你明白了,是因为项目没有编译,如果场景与我的相同,这里是解决此问题的步骤。
1) 打开终端并转到您的项目路径(或者只需在 Android Studio 中打开终端)
2) 清理项目
./gradle干净
3) 构建项目
./gradle构建
注意:如果此时您已经注意到该项目没有编译...宾果游戏!这可能是真正的问题。然后执行以下步骤:
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。
希望这能为其他人节省时间!
我想练习这个 Dagger 2 Vehicle Motor 例子。
除了我的 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'
- 将 Dagger_VehicleComponent 更改为 DaggerVehicleComponent
- 清理并重建您的项目
- 导入 DaggerVehicleComponent class
我花了一段时间才弄明白这一点。但我找到了原因(至少在我这边) 我从头开始创建了一个项目,之后我尝试设置基本的 components/tools 直到遇到这个问题。
阅读其他答案我发现 DaggerApplicationComponent class 是由编译器自动生成的,然后我想,为什么 IDE 不能 "find" 这个 class? 答案很明显......你明白了,是因为项目没有编译,如果场景与我的相同,这里是解决此问题的步骤。
1) 打开终端并转到您的项目路径(或者只需在 Android Studio 中打开终端)
2) 清理项目 ./gradle干净
3) 构建项目 ./gradle构建
注意:如果此时您已经注意到该项目没有编译...宾果游戏!这可能是真正的问题。然后执行以下步骤:
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。
希望这能为其他人节省时间!