未解决的参考DaggerApplicationComponent

35 android kotlin dagger-2

我正在尝试创建我的应用程序组件,但Dagger不会生成我的应用程序组件.这是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)
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的AppComponent

@Singleton
@Component(modules = arrayOf(AppModule::class))
interface ApplicationComponent {
    fun inject(application: MyApplication)
}
Run Code Online (Sandbox Code Playgroud)

这是截图 在此输入图像描述

这是我在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
Run Code Online (Sandbox Code Playgroud)

Pau*_*and 46

我的解决方案是添加

apply plugin: 'kotlin-kapt'
Run Code Online (Sandbox Code Playgroud)

并删除

kapt {
    generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)

  • 这救了我的命. (2认同)

Jef*_*jan 28

这有助于我解决这个问题

将其添加到顶部 build.gradle

apply plugin: 'kotlin-kapt'
Run Code Online (Sandbox Code Playgroud)

里面的android标签添加

kapt {
    generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)

然后更换

annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
Run Code Online (Sandbox Code Playgroud)

kapt 'com.google.dagger:dagger-compiler:2.11'
Run Code Online (Sandbox Code Playgroud)

现在Rebuild的项目由

Build -> Rebuild project
Run Code Online (Sandbox Code Playgroud)


And*_*dEx 27

请尝试启用存根生成,这可能是在构建过程的此阶段看不到类的原因.在您的build.gradle文件中,顶级:

kapt {
    generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)


pio*_*543 6

我已经下载了你的Github项目.感谢分享!

您的问题的答案非常简单:

Build -> Rebuild project
Run Code Online (Sandbox Code Playgroud)

Dagger依赖项文件将被重新创建,app之后会出现任何问题.

我已经用Android Studio 2.1.2版本检查了这个.有用


edi*_*rsh 5

你应该删除

kapt {
generateStubs = true}
Run Code Online (Sandbox Code Playgroud)

并添加到应用程序 gradle 文件的顶部

apply plugin: 'kotlin-kapt'
Run Code Online (Sandbox Code Playgroud)

然后 Dagger 会处理剩下的 :)


Epi*_*rce 0

请尝试将此添加到您的build.gradle

android {
    dexOptions {
        incremental false
    }
Run Code Online (Sandbox Code Playgroud)

编辑:显然一年后,如果您不应用kotlin-kapt插件,就会发生这种情况。还要确保您使用kapt而不是annotationProcessor.