android - Dagger 2 - 组件作用域编译错误

标签 android dagger-2 dagger

简单的作用域注解:

@Scope
@Retention(RUNTIME)
public @interface SimpleScope {
}

简单组件:

@SimpleScope
@Component
public interface SimpleComponent {
}

编译错误:

error: Scoping annotations are only allowed on concrete types and 
@Provides methods

最佳答案

编译器错误实际上来自 Dagger 1 注释处理器。具体在这里:Dagger 1 ValidationProcessor .如果注释处理器发现任何接口(interface)都使用 javax.inject.Scope 注释进行注释,它会报告错误。即使 Dagger 1 没有以任何方式使用接口(interface)或作用域。

我们目前正在从 Dagger 1 迁移到 Dagger 2,因此两个注释处理器都在使用 Dagger 1 和 Dagger 2 的 Gradle 模块上运行。

一个解决方案是完全迁移每个 Gradle 模块,这样两个注解处理器就不必在相同的代码上运行。然而,这并不总是那么容易。

我们的解决方案是派生 Dagger 1 并修改 ValidationProcessor,使其在接口(interface)是 Dagger 2 组件时不会失败。

关于android - Dagger 2 - 组件作用域编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52430796/

相关文章:

android - 使用 Dagger 对构造函数进行依赖注入(inject)

Android TextChangedListener 和 OnKeyListener 干扰

安卓相机黑屏

android - 样式包含输入错误的 key : 0x010102cd

java - 在 java android 中使用 dagger2 在自定义/util 类中注入(inject) AndroidInjection 的位置

Dagger 2 模块依赖图 : bound multiple times

android - 我可以在 Scala 中编写一些代码(使用 Android Studio)吗?

java - 如何使用 Dagger2 将依赖项注入(inject)任何类型的对象?

android - Dagger 2 : Injecting to Activities from multiple subcomponents

java - Dagger 2 问题覆盖单个提供来自应用程序使用的库中模块的注释方法