web-dev-qa-db-fra.com

Android Kotlin: Erreur Référence non résolue: DaggerAppComponent

J'ai installé le plugin Kotlin aujourd'hui dans un projet existant avec Dagger 2. Avant l'installation de Kotlin, je n'avais aucun problème avec Dagger. Cependant, maintenant le compilateur se plaint:

Error:(5, 32) Unresolved reference: DaggerAppComponent
Error:Execution failed for task ':app:compileDebugKotlinAfterJava'.
> Compilation error. See log for more details
Error:(12, 21) Unresolved reference: DaggerAppComponent

Niveau de projet:

ext.kotlin_version = '1.1.1'

    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.2.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-Android-extensions:$kotlin_version"

Grade du module:

kapt {
    generateStubs = true
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.Android.support', module: 'support-annotations'
    })
    compile 'com.Android.support:appcompat-v7:25.0.1'
    testCompile 'junit:junit:4.12'

    compile 'com.google.dagger:dagger:2.7'
    kapt 'com.google.dagger:dagger-compiler:2.7'

    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"


}

Le fichier DaggerAppComponent IS est généré automatiquement. Je ne comprends donc pas pourquoi une erreur de référence non résolue est générée.

16
Mike6679
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-kapt'   

Et dans vos dépendances:

implementation "com.google.dagger:dagger:2.x"
implementation "com.google.dagger:dagger-Android:2.x"
implementation "com.google.dagger:dagger-Android-support:2.x"
kapt "com.google.dagger:dagger-compiler:2.x"
kapt "com.google.dagger:dagger-Android-processor:2.x"
43
Pablo Cegarra

J'avais le même problème, mais mon cas était différent du vôtre. La référence non résolue est apparue uniquement lors de la génération d'un fichier APK signé. Voici comment je l'ai résolu:

app/build.gradle

kapt {
    generateStubs = true
}

dependencies {
    //...
    implementation 'com.google.dagger:dagger:2.9'
    kapt 'com.google.dagger:dagger-compiler:2.9'
}

Je peux maintenant déployer mon APK signé sans erreurs

15
voghDev

Ce projet m'a aidé à rester sur la bonne voie: https://github.com/damianpetla/kotlin-dagger-example

0
Mike6679