Can';t解析androidx.databinding

Can';t解析androidx.databinding,android,android-databinding,android-livedata,androidx,Android,Android Databinding,Android Livedata,Androidx,我正在尝试将我的应用程序迁移到AndroidX,如下所示。 我运行重构选项:迁移到AndroidX 起初,我的错误已经通过重新启动和清理我的项目得到解决。然后我遇到了一个问题STRING\u太大了(参见此),我通过将gradle构建工具降级到3.1.3解决了这个问题 但现在我正在努力进行数据绑定。迁移工具替换了我所有的 import android.databinding.** 借 但我有错误信息 无法解析androidx.databinding 他们有什么我应该做的来让它工作吗 我试图通过

我正在尝试将我的应用程序迁移到AndroidX,如下所示。 我运行重构选项:迁移到AndroidX

起初,我的错误已经通过重新启动和清理我的项目得到解决。然后我遇到了一个问题
STRING\u太大了
(参见此),我通过将gradle构建工具降级到3.1.3解决了这个问题

但现在我正在努力进行数据绑定。迁移工具替换了我所有的

import android.databinding.**

但我有错误信息

无法解析androidx.databinding

他们有什么我应该做的来让它工作吗


我试图通过后退回到旧的
数据绑定

import android.databinding.**
而不是
androidx
one,但是我在xml布局中使用的
LiveData
有一个错误

找不到参数类型为androidx.lifecycle.MutableLiveData的属性的setter


Androidx.databinding是正确的包,对于将来的问题,您可以在此处查找映射:


Android Studio在切换已迁移和未迁移的分支或项目时似乎遇到了问题。目前对我来说唯一有效的修复方法是进行梯度清理,然后重新启动android studio(在切换分支或迁移之后)

数据绑定有一个非常奇怪的问题,当您出现一些语法错误或导入错误时,它将显示100个绑定错误,但不是实际的错误

你能做什么 打开每个xml文件,然后打开工作的java文件,查看是否存在未解决的导入或错误。 若发现错误,请解决并生成项目,数据绑定类仅在成功生成时生成


我在@中已经很好地解释了它。

用gradle编写下面的代码

android {
...
dataBinding {
    enabled = true
}
}

在迁移到AndroidX之后,我遇到了类似的问题。对我来说,为活动设置
contentView
时出错,其余的数据绑定代码被认为是正常的


最后,对我有效的是
使缓存无效并重新启动
。遗憾的是,在使用AndroidStudio时,这似乎是一个常见的需求。希望他们能及时解决这个问题。

我检查了迁移图,但导致问题的是
android.databinding.BaseObservable
并用
androidx.databinding.BaseObservable
替换它并不能解决问题。我还尝试了gradlew clean+无效缓存并重新启动,但没有成功。“androidx.databinding”包似乎是空的(当我键入导入androidx.databinding时,autocompletion不提供任何内容)。是的,autocomplete直到成功构建之后,当项目中有数据绑定时才工作。无论如何,您都应该解决这个问题,然后在执行gradle构建时查看构建控制台,这将显示更多问题。如果您看到任何绑定实现类(生成),那么您可以使用名称来确定哪个xml文件有问题(通常是绑定变量的问题)。我很清楚这些问题,我从一开始就在使用数据绑定,但是在我迁移到
androidx
之前,项目编译得很好,所以我不确定这是否是代码内部的错误(我的基本代码非常庞大,因此很难找到它们是否存在),在成功构建之后迁移了吗。迁移到androidx应该在成功构建之后执行,这样它才能找到所有的用途。我认为迁移之后有一些未解析的路径,所以您的构建失败了。我也遇到过这种错误,所以我知道手动检查是一种方法。另一种方法是打印所有堆栈跟踪,请参见“是的,我在成功构建后迁移”(我只是通过上一次提交来验证)。我会尝试你所说的,如果它对我有帮助,我会更新我的评论,但似乎很奇怪,成功的构建会导致迁移后无法解决,我会让你知道。如果你确实备份了项目,请再次尝试迁移旧代码。
android {
...
dataBinding {
    enabled = true
}
}