作者:进出口产地 | 来源:互联网 | 2022-10-29 20:38
从Kotling 1.3.21更新到1.3.30后生成错误:
AppComponent.java:16: error: [Dagger/MissingBinding]
java.util.Map,
javax.inject.Provider>
cannot be provided without an @Provides-annotated method.
在两个对Kotlin,Dagger和Architecture组件具有相似依赖性的不同项目上进行了复制。
我怀疑它与kotlin 1.3.30中的最近kapt更新有关:https ://blog.jetbrains.com/kotlin/2019/04/kotlin-1-3-30-released/
试图禁用/启用文章中的kapt选项,尝试了gradle clean,使缓存无效,没有任何帮助。只有降级到1.3.21项目才能成功构建。
1> David Medenj..:
该错误已由GitHub和YouTrack 上的某人报告。Kotlin版本1.3.31发布后,此问题应得到修复。
更新: Kotlin 1.3.31已发布,因此请确保更新您的Kotlin版本!
GitHub上列出的Kotlin 1.3.30的解决方法是使用Java注释代替Kotlin for ViewModelKey
,否则您可以降级回Kotlin 1.3.21。
/**
* Workaround in Java due to Dagger/Kotlin not playing well together as of now
* https://github.com/google/dagger/issues/1478
*/
@MapKey
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewModelKey {
Class extends ViewModel> value();
}