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.
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"
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
Ce projet m'a aidé à rester sur la bonne voie: https://github.com/damianpetla/kotlin-dagger-example