Kotlin 1.3.30 的更新中断了 Dagger 2.21 的构建
Update to Kotlin 1.3.30 breaks build with Dagger 2.21
从 Kotling 1.3.21 更新到 1.3.30 后出现构建错误:
AppComponent.java:16: error: [Dagger/MissingBinding]
java.util.Map<java.lang.Class<? extends androidx.lifecycle.ViewModel>,
javax.inject.Provider<androidx.lifecycle.ViewModel>>
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/
尝试 disable/enable 文章中的 kapt 选项,尝试 gradle 清理、使缓存无效,但无济于事。
只有降级到 1.3.21 项目构建成功。
此错误已被某人报告 on GitHub and on YouTrack。一旦 Kotlin 版本 1.3.31 发布,这应该会得到修复。
更新: Kotlin 1.3.31 已发布,请确保更新您的 Kotlin 版本!
GitHub 上列出的 Kotlin 1.3.30 的解决方法是使用 Java 注释而不是 ViewModelKey
的 Kotlin,或者您可以降级回 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();
}
Upgrade
dagger version and kotlin version到latest
annotation class
应该可以。
目前最新版本是:-
匕首版本 :- 2.23.2
Kotlin 版本 :- 1.3.41
从 Kotling 1.3.21 更新到 1.3.30 后出现构建错误:
AppComponent.java:16: error: [Dagger/MissingBinding]
java.util.Map<java.lang.Class<? extends androidx.lifecycle.ViewModel>,
javax.inject.Provider<androidx.lifecycle.ViewModel>>
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/
尝试 disable/enable 文章中的 kapt 选项,尝试 gradle 清理、使缓存无效,但无济于事。 只有降级到 1.3.21 项目构建成功。
此错误已被某人报告 on GitHub and on YouTrack。一旦 Kotlin 版本 1.3.31 发布,这应该会得到修复。
更新: Kotlin 1.3.31 已发布,请确保更新您的 Kotlin 版本!
GitHub 上列出的 Kotlin 1.3.30 的解决方法是使用 Java 注释而不是 ViewModelKey
的 Kotlin,或者您可以降级回 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();
}
Upgrade
dagger version and kotlin version到latest
annotation class
应该可以。
目前最新版本是:-
匕首版本 :- 2.23.2
Kotlin 版本 :- 1.3.41