未解决的参考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

这个对我有用。