web-dev-qa-db-fra.com

Référence non résolue DaggerApplicationComponent

J'essaie de créer mon composant d'application, mais Dagger ne génère pas mon composant d'application. voici MyApplication classe

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)
  }
}

et voici ma classe AppComponent

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

voici la capture d'écran enter image description here

c'est mon projet sur github

voici le journal des erreurs

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
32
user5543258

ma solution est d'ajouter

apply plugin: 'kotlin-kapt'

et retirer

kapt {
    generateStubs = true
}
46
Pauland

Veuillez essayer d'activer génération de stubs , cela pourrait être la raison pour laquelle la classe n'est pas visible à ce stade du processus de construction. Dans votre build.gradle fichier, niveau supérieur:

kapt {
    generateStubs = true
}
27
AndroidEx

Cela m'a aidé à résoudre ce problème

Ajoutez ceci en haut du build.gradle

apply plugin: 'kotlin-kapt'

A l'intérieur de la balise Android add

kapt {
    generateStubs = true
}

Et puis remplacer

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

à

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

Maintenant Rebuild le projet par

Build -> Rebuild project
24
Jeffrey Rajan

J'ai déjà téléchargé votre projet Github. Merci d'avoir partagé!

La réponse à votre problème est assez simple:

Build -> Rebuild project

Les fichiers de dépendances de poignard seront recréés et l'application sera lancée avec n'importe quel problème.

J'ai déjà vérifié cela avec Android version Studio 2.1.2. Cela fonctionne

6
piotrek1543

vous devez supprimer

kapt {
generateStubs = true}

et ajouter en haut du fichier de notes d'application

apply plugin: 'kotlin-kapt'

alors Dagger s'occupera du reste :)

4
ediBersh

Dans mon cas, la dépendance du compilateur kapt est manquante. Veuillez également vous assurer d'avoir une dépendance inférieure.

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

app build.gradle

apply plugin: 'com.Android.application'

apply plugin: 'kotlin-Android'

apply plugin: 'kotlin-kapt'

apply plugin: 'kotlin-Android-extensions'

Android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.usb.utility"
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.Android.support:appcompat-v7:27.1.0'
    implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.dagger:dagger-Android:2.15'
    compile 'com.google.dagger:dagger-Android-support:2.15' // if you use the support libraries
    kapt 'com.google.dagger:dagger-Android-processor:2.15'
    kapt 'com.google.dagger:dagger-compiler:2.15'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.1'
    androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.1'
}
2

Aussi pour Java utilisateurs, la solution consiste simplement à Reconstruire votre projet.

2
otoloye

Deux étapes seulement doivent être requises pour les projets mixtes Java/Kotlin:

  1. Ajouter apply plugin: 'kotlin-kapt' en haut du fichier de construction
  2. Remplacer annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1' avec kapt 'com.google.dagger:dagger-compiler:2.14.1'
2
Meanman

La réponse est simple:

Build -> Rebuild project

Ça marche pour moi.

1
tugbacevizci

Ajoutez ceci sur le dessus de build.gradle

apply plugin: 'kotlin-kapt'

Ajoutez ceci dans les dépendances

kapt 'com.google.dagger:dagger-compiler:2.15'
kapt 'com.google.dagger:dagger-Android-processor:2.15'

Après cela, reconstruisez votre projet. j'espère que ça marchera. Merci

1
revati raman

Veuillez essayer d'ajouter ceci à votre build.gradle

Android {
    dexOptions {
        incremental false
    }

EDIT: apparemment un an plus tard, cela peut se produire si vous ne postulez pas kotlin-kapt brancher. Assurez-vous également d'utiliser kapt au lieu de annotationProcessor.

0
EpicPandaForce