更新到科特林1.3.30休息建立与匕首2.21更新到科特林1.3.30休息建立与匕首2.21(Upd

2019-05-12 07:48发布

建立错误的更新从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.

转载与上科特林,匕首和架构组件类似的依赖两个不同的项目。

我怀疑它在某种程度上与最近kapt更新在科特林1.3.30: https://blog.jetbrains.com/kotlin/2019/04/kotlin-1-3-30-released/

尝试禁用/启用从文章kapt选项,试图gradle这个干净的,无效的高速缓存,没有什么帮助。 只有降级到1.3.21项目成功构建。

Answer 1:

这个bug已经由有人举报在GitHub和上YouTrack 。 一旦科特林版本1.3.31得到释放这应该是固定的。

更新:科特林1.3.31已经出来了,所以一定要更新您的科特林版本!


对于科特林1.3.30在GitHub上列出的解决方法是使用Java注释,而不是为科特林ViewModelKey ,或者你可以降级到科特林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();
}



文章来源: Update to Kotlin 1.3.30 breaks build with Dagger 2.21