![](/img/trans.png)
[英]Error: @dagger.android.ContributesAndroidInjector was used, but dagger.android.processor.AndroidProcessor was not found
[英]Why @ContributesAndroidInjector cant be found by DaggerAndroidProcessor library on the processor path?
我正在实现 Dagger2,当我使用 @ContributesAndroidInjector 时,出现编译时错误: @dagger.android.ContributesAndroidInjector was used,but dagger.android.processor.AndroidProcessor was not found on the processor path
我尝试了多种解决方案,但这个错误永远不会消失。 我尝试使用旧库
dagger2 依赖项的版本。 我尝试创建一个 java 抽象 @Module class。 我
尝试使用 Kotlin android 处理器声明 kapt 依赖项,但没有任何帮助。 有人可以帮我摆脱这个错误。 以下是我在项目中使用的 Dagger2 的依赖项以供参考:
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.35.1"
annotationProcessor "com.google.dagger:dagger-android-processor:2.35.1"
kapt 'com.google.dagger:dagger-compiler:2.28.3'
implementation 'javax.inject:javax.inject:1'
kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0"
implementation "androidx.compose.runtime:runtime:1.2.1"
我设法通过将我的依赖项更改为以下内容来解决这个问题 -
implementation 'com.google.dagger:dagger-android:2.16'
implementation 'com.google.dagger:dagger-android-support:2.16'
kapt "com.google.dagger:dagger-compiler:2.16"
kapt "com.google.dagger:dagger-android-processor:2.16"
这似乎更像是一个黑客而不是一个正确的解决方案,因为当我更新我的库时它开始给我编译时错误
哦。 您没有使用与您的实现相同的 Dagger 编译器。 您的编译器是 2.28.3,而您的实现是 2.35.1,如果 Dagger 编译器的版本与其实现不同,它可能会生成引用缺失实现的非工作代码。 或者(如此处)它可能根本不会生成代码。
使它们匹配:
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.35.1"
kapt "com.google.dagger:dagger-android-processor:2.35.1"
kapt "com.google.dagger:dagger-compiler:2.35.1"
implementation 'javax.inject:javax.inject:1'
kapt "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0"
implementation "androidx.compose.runtime:runtime:1.2.1"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.