Referencia no resuelta DaggerApplicationComponent

Intento crear mi componente de aplicación, pero Dagger no genera mi componente de aplicación. aquí está la class 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) } } 

y aquí está mi class AppComponent

 @Singleton @Component(modules = arrayOf(AppModule::class)) interface ApplicationComponent { fun inject(application: MyApplication) } 

aquí está la captura de pantalla enter image description here

este es mi proyecto en github

aquí está el logging de errores

 Error:(7, 48) Unresolved reference: DaggerApplicationComponent Error:(28, 17) Unresolved reference: DaggerApplicationComponent Error:Execution failed for task ':app:compileDebugKotlin'. > Comstacktion 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'. > Comstacktion 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 

Intente habilitar la generación de stubs , esta podría ser la razón por la cual la class no está visible en esta etapa del process de compilation. En tu file build.gradle , nivel superior:

 kapt { generateStubs = true } 

mi solución es agregar

 apply plugin: 'kotlin-kapt' 

y eliminar

 kapt { generateStubs = true } 

Esto me ayudó a solucionar este problema

Agregue esto en la parte superior de build.gradle

 apply plugin: 'kotlin-kapt' 

Dentro de la label de android agregar

 kapt { generateStubs = true } 

Y luego reemplace

 annotationProcessor 'com.google.dagger:dagger-compiler:2.11' 

a

 kapt 'com.google.dagger:dagger-compiler:2.11' 

Ahora Rebuild el proyecto

 Build -> Rebuild project 

Ya descargué tu proyecto Github. ¡Gracias por compartir!

La respuesta para tu problema es bastante simple:

 Build -> Rebuild project 

Los files de dependencies Dagger se recrearán y la aplicación después se lanzará con cualquier problema.

Ya he comprobado esto con la versión de Android Studio 2.1.2. Funciona

debes eliminar

 kapt { generateStubs = true} 

y agregue a la parte superior del file gradle de la aplicación

 apply plugin: 'kotlin-kapt' 

entonces Dagger se encargará del rest 🙂

Intenta agregar esto a tu build.gradle

 android { dexOptions { incremental false } 

EDITAR: aparentemente un año más tarde esto puede suceder si no kotlin-kapt plugin kotlin-kapt . También asegúrese de usar kapt lugar de annotationProcessor .

  • Kotlin: Declaración a Lambda
  • No se esperan arguments de tipo para la diversión findViewById (p0: Int): Ver
  • Llamar al constructor de super class en Kotlin, Super no es una expresión
  • Kotlin - Use Realm Module en android
  • Comprender los ejecutores kotlin
  • Declarar un campo de interfaz estática en Kotlin
  • acceso al método de extensión kotlin en otro kt
  • usando Kotlin con Gradle
  • Kotlin: Interface Queue no tiene constructores
  • Argumento de tipo explícito Kotlin y RxJava
  • ¿Cómo generar un file kotlin desde un procesador de anotación?