匕首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'
答
- 变化Dagger_VehicleComponent与DaggerVehicleComponent
- 清理和重建项目
- 进口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。
希望这可以为别人节省时间!