【问题标题】:How to solve missing InjectedFieldSignature Error implementing Dagger 2 in android?如何解决在 android 中实现 Dagger 2 时丢失的 InjectedFieldSignature 错误?
【发布时间】:2020-10-22 15:37:49
【问题描述】:

在使用 dagger 2 之前,我已经在 android 中实现了依赖注入,但最近,我尝试在一个新项目中使用它,但出现以下错误:

错误:找不到符号 导入 dagger.internal.InjectedFieldSignature; ^ 符号:类 InjectedFieldSignature 位置:包 dagger.internal/location/to/App_MembersInjector.java:30:错误:找不到符号

这是我的应用程序组件:

@Singleton
@Component(
    modules = [
        (AndroidInjectionModule::class),
        (VmModule::class),
        (InjectorModule::class),
    ]

)
interface ApplicationComponent: AndroidInjector<Application> {

@Component.Builder
interface Builder{
    @BindsInstance
    fun application(application: App): Builder
    fun build() : ApplicationComponent
}

    fun inject(home: Home)
}

然后在我的 App 类中:

class App: Application(), HasAndroidInjector {

@Inject
lateinit var  anAndroidInjector: DispatchingAndroidInjector<Any>



override fun onCreate() {
    super.onCreate()
    DaggerApplicationComponent.builder().application(this).build().inject(this)
}

override fun androidInjector(): AndroidInjector<Any> {
    return anAndroidInjector
}

}

然后是注入器模块:

@Module
abstract class InjectorModule {
  @ContributesAndroidInjector
  abstract fun bindHomeActivity(): Home
}

以下是我的应用Gradle的一小段摘录,用来展示匕首版本:

implementation 'com.google.dagger:dagger-android:2.24'
implementation 'com.google.dagger:dagger-android-support:2.24'
kapt 'com.google.dagger:dagger-android-processor:2.24'
kapt 'com.google.dagger:dagger-compiler:2.28'

如果您有任何线索,请告诉我问题可能出在哪里。

【问题讨论】:

    标签: android kotlin dependency-injection dagger-2 kapt


    【解决方案1】:

    您的 Dagger 工件版本不匹配。具体来说,您使用 dagger-compiler:2.28 生成代码,但包含对 Dagger 2.24 的依赖。

    dagger.internal.InjectedFieldSignature 的特定情况下,该类似乎已在 Dagger 版本 2.25.3 中引入。 Dagger 编译器的任何更高版本都将期望InjectedFieldSignature 存在并且可以在生成的代码中使用。但是,由于您的项目中只包含 Dagger 2.24,因此生成的代码最终会引用一个不存在的类。

    要解决此问题,请确保所有 Dagger 依赖项使用相同的版本。

    【讨论】:

    • 非常感谢,这就是问题所在。现在完美运行。
    猜你喜欢
    • 2022-08-24
    • 2019-03-27
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多