简单的作用域注解:
@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/