繁体   English   中英

为什么 DaggerAndroidProcessor 库在处理器路径上找不到 @ContributesAndroidInjector?

[英]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"

我还根据kapt上的 Dagger README 部分将您的 Android 编译器切换为 kapt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM