【问题标题】:Why @ContributesAndroidInjector cant be found by DaggerAndroidProcessor library on the processor path?为什么 DaggerAndroidProcessor 库在处理器路径上找不到 @ContributesAndroidInjector?
【发布时间】:2022-09-27 18:13:59
【问题描述】:

我正在实现 Dagger2,当我使用 @ContributesAndroidInjector 时,我得到了编译时间 错误:@dagger.android.ContributesAndroidInjector was used,but dagger.android.processor.AndroidProcessor was not found on the processor path

我尝试了多种解决方案,但这个错误永远不会消失。我尝试使用旧库
dagger2 依赖项的版本。我尝试创建一个 java 抽象 @Module 类。我
尝试使用 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\"
  • 为什么你用kapt 做一个而annotationProcessor 做另一个? docs 说要全部使用 kapt,而不仅仅是一个,假设您正在使用 Kotlin。我没有看到您的具体错误,但是如果这两个注释处理器不匹配,我可以想象 Kotlin 注释阶段如果在 Android 处理器进入之前遇到 @ContributesAndroidInjector 会给出该错误。

标签: java android kotlin dependency-injection dagger-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"

这似乎更像是一个 hack 而不是一个正确的解决方案,因为当我更新我的库时它开始给我编译时错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2016-04-25
    • 2020-01-04
    • 2014-07-27
    • 2015-03-15
    • 1970-01-01
    • 2017-03-07
    • 2011-10-13
    相关资源
    最近更新 更多