I have installed Kotlin plugin today into an existing project with Dagger 2. Before Kotlin was installed I had no issues with Dagger. However, now the compiler complains :
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
Project gradle:
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"
Module gradle:
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"
}
The DaggerAppComponent file IS auto generated, so I'm confused as to why there is an un resolved reference error thrown.
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
And in your dependencies:
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"
I was getting the same error message, but my case was different than yours. The unresolved reference appeared only when generating signed APK. This is how I solved it:
app/build.gradle
kapt {
generateStubs = true
}
dependencies {
//...
implementation 'com.google.dagger:dagger:2.9'
kapt 'com.google.dagger:dagger-compiler:2.9'
}
I can now deploy my signed APK without errors
At first, It gives an error after rebuild:
Unresolved reference: DaggerAppComponent
You should try to import (Alt + Enter) that component.
On my end, as of
Kotlin version 1.5.30
Dagger version 2.35.1
Dagger support version 2.28.3
There's an issue with dagger 2 (above versions) and kotlin 1.5.30. When you try to run the project using
implementation 'com.google.dagger:dagger:2.35.1'
implementation 'com.google.dagger:dagger-android:2.35.1'
implementation 'com.google.dagger:dagger-android-support:2.28.3'
kapt 'com.google.dagger:dagger-compiler:2.28.3'
kapt 'com.google.dagger:dagger-android-processor:2.28.3'
It will fail with error:
java.lang.reflect.InvocationTargetException
When i used Run with --stacktrace
i found out that the issue was:
IllegalStateException: Unsupported metadata version" in KaptWithoutKotlincTask with 1.5.0-M2
I found out that this is because Dagger uses the old version of kotlinx-metadata-jvm
library & doesn't support kotlin version 1.5 and above yet.
So as a fix, i added:
kapt 'org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.2.0'
I don't know if there's an official fix to this yet, but this might help someone.
N:B: i tried changing from kapt to annotationProcessor, and though the project compiled, i still couldn't generate DaggerAppComponent
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With