Android 数据绑定吞噬了来自其他编译器的错误

Android databinding swallows errors from other compilers

如果在编译过程中出现任何错误,则不会生成数据绑定 类 - 因此,我会收到大量这样的错误:

  symbol:   class DataBindingComponent
  location: class TrainingActivityCompletedSetBinding
  e: S:\ProjectLocation\TrainingActivityCompletedSetBinding.java:60: error: cannot find symbol
  @Nullable DataBindingComponent component)

问题是编译错误与数据绑定根本无关,因此我不知道究竟是什么导致了它 - 我必须手动深入文件才能找到问题。

在上面的示例中,我只是从需要它的构造函数中省略了 @Inject。很高兴在这种情况下看到来自 Dagger 的错误消息,这样我就可以立即找到它,而不是必须深入研究所有项目 类 才能手动找到它。

如有任何帮助,将不胜感激


AndroidStudio 和 Databinding 目前都是 3.1.3 版本,至少从 3.0 开始就有这个错误。

使用 Kotlin V1.2.41 和 kapt 生成代码。

尝试增加编译器显示的最大错误数,不幸的是没有区别。

暂时,解决方法是简单地禁用数据绑定 V2:gradle.properties 中的 android.databinding.enableV2=true。尽管如此,仍然对更好的解决方案持开放态度。

无法写评论,所以我会写在这里。 可能您想说添加这样一行:android.databinding.enableV2=false,这样它就可以正常工作。

我看到你说你尝试增加编译器显示的最大错误数,但如果它能帮助其他在这里找到方法的人:

您可以关注此论坛 post,而不是禁用 V2 数据绑定,它演示了如何扩展显示错误的数量。这解决了我的问题,而无需每次都禁用 V2。

这解决了我的问题尽管我看到的错误数量不是一个明显的整数,所以我不确定计数是如何工作的。

https://github.com/google/dagger/issues/306

我引用并继续@Aqluse also from another thread 的回答。

这是解决此数据绑定问题的替代方法。

1. kapt "androidx.databinding:databinding-compiler:${your gradle version}"
2. android.databinding.enableV2=false
3. check your missing or wrong import XML **check your version control**
4. upgrade your android studio to the latest stable