未解决的参考DaggerApplicationComponent
我试图创建我的应用程序组件,但匕首不生成我的应用程序组件。 这里是MyApplication类
class MyApplication : Application() { companion object { @JvmStatic lateinit var graph: ApplicationComponent } @Inject lateinit var locationManager : LocationManager override fun onCreate() { super.onCreate() graph = DaggerApplicationComponent.builder().appModule(AppModule(this)).build() graph.inject(this) } }
这里是我的AppComponent类
@Singleton @Component(modules = arrayOf(AppModule::class)) interface ApplicationComponent { fun inject(application: MyApplication) }
这里是截图
这是我在github上的 项目
这里是错误日志
Error:(7, 48) Unresolved reference: DaggerApplicationComponent Error:(28, 17) Unresolved reference: DaggerApplicationComponent Error:Execution failed for task ':app:compileDebugKotlin'. > Compilation error. See log for more details Information:BUILD FAILED Information:Total time: 21.184 secs Error:e: .../MyApplication.kt: (7, 48): Unresolved reference: DaggerApplicationComponent e: Unresolved reference: DaggerApplicationComponent FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileDebugKotlin'. > Compilation error. See log for more details * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Information:4 errors Information:0 warnings Information:See complete output in console
请尝试启用存根生成 ,这可能是在构建过程的这个阶段该类不可见的原因。 在你的build.gradle
文件中,顶层:
kapt { generateStubs = true }
我的解决方案是添加
apply plugin: 'kotlin-kapt'
并删除
kapt { generateStubs = true }
这帮助我解决了这个问题
将这添加到build.gradle
的顶部
apply plugin: 'kotlin-kapt'
里面的android
标签添加
kapt { generateStubs = true }
然后替换
annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
至
kapt 'com.google.dagger:dagger-compiler:2.11'
现在通过Rebuild
项目
Build -> Rebuild project
我已经下载了你的Github项目。 感谢分享!
你的问题的答案很简单:
Build -> Rebuild project
匕首依赖关系文件将被重新创建,应用程序之后将启动任何问题。
我已经检查了这个与Android Studio 2.1.2版本。 有用
你应该删除
kapt { generateStubs = true}
并添加到应用程序gradle文件的顶部
apply plugin: 'kotlin-kapt'
那么Dagger会照顾其余的:)
请尝试添加到您的build.gradle
android { dexOptions { incremental false }
编辑:显然一年后,如果你不应用kotlin-kapt
插件,可能会发生这种情况。 还要确保你使用kapt
而不是annotationProcessor
。
另外对于Java用户来说,解决方案就是重建你的项目。
答案很简单:
Build -> Rebuild project
这个对我有用。