Can't resolve androidx.databinding
我正在按照官方文档尝试将我的应用迁移到AndroidX。
我运行重构选项:迁移到AndroidX。
起初,我遇到了一些错误,这些问题已通过重新启动和清理项目来解决。然后,我遇到了问题STRING_TOO_LARGE(参见此堆栈溢出问题),通过将gradle构建工具降级到3.1.3解决了这个问题。
但是现在我正在努力进行数据绑定。迁移工具取代了我所有的
1
| import android.databinding.** |
来自
1
| import androidx.databinding.** |
但我收到错误消息
cannot resolve androidx.databinding.
要使其正常工作,我需要做些什么吗?
我尝试通过回退
回到旧的databinding
1
| import android.databinding.** |
而不是androidx一个,但是我在xml布局中使用时出现一个错误,说
cannot find the setter for attribute with parameter type androidx.lifecycle.MutableLiveData.
在gradle中的以下代码中编写
1 2 3 4 5 6
| android {
...
dataBinding {
enabled = true
}
} |
数据绑定有一个很奇怪的问题,当您遇到一些语法错误或某些导入错误时,它将显示100个绑定错误,而不是实际错误。
你可以做什么
打开每个xml文件,然后打开您工作的java文件,并查看是否存在未解决的导入或错误。
如果发现一些错误,请解决并构建项目,则数据绑定类仅在成功构建后生成。
我在@this答案中解释得很好。
-
我很清楚这些问题,自开始以来我就一直在使用数据绑定,但是在迁移到androidx之前该项目已经很好地进行了编译,因此我不确定这可能是代码内部的错误(而且我的基本代码是否正确)巨大,因此很难找到它们是否存在)
-
成功构建后是否进行了迁移。成功构建后,应迁移到androidx,以便它可以找到所有用途。
-
我认为迁移后还有一些未解决的路径,因此您的构建失败了。我也遇到了这种错误,所以我知道手动检查是一种方法。其他方式可以打印所有堆栈跟踪,请参见stackoverflow.com/a/372??66244/6891563
-
是的,我在成功构建后进行了迁移(我只是通过上一次提交来进行验证)。我将尝试您说的内容,如果有帮助,我将更新我的评论,但是奇怪的是,成功构建会导致迁移后无法解决,我会告诉您。
-
您确定已备份项目,请尝试再次迁移该旧代码。
-
也许我需要将gradle构建工具设置为3.2.0才能进行数据绑定?由于问题中提到的关于STRING_TOO_LARGE的问题,我将其降级为3.1.3。
-
他们改变了数据绑定生成流程的机制,如果使用最新的3.2.0,则在构建项目后生成绑定类。如果要在3.2之前使用此功能,请在gradle.properties中设置android.databinding.enableV2=true
-
我已经添加了属性,但这对当前问题没有任何改变。我的代码库仍然是Java而不是Kotlin,也许这件事吗?
-
最终,@ MHogge深入到了此问题的深处吗?
Androidx.databinding是正确的软件包,对于将来的问题,您可以在此处查找映射:https://developer.android.com/jetpack/androidx/migrate#migrate。
当切换分支和未迁移的项目时,Android Studio似乎有问题。目前对我来说唯一的解决方法是清理gradle,然后重新启动android studio(在切换分支或迁移之后)
- 我检查了迁移映射,但是导致问题的映射是android.databinding.BaseObservable,用androidx.databinding.BaseObservable替换它并不能解决它。我还尝试了gradlew清理失效缓存并重新启动,但是没有成功。包\\'androidx.databinding \\'似乎是空的(当我键入import androidx.databinding时,自动补全功能不提供任何功能)
-
是的,只有当成功构建项目中的数据绑定后,自动完成功能才起作用。无论如何,您都应该解决该问题,然后在执行gradle构建时查看构建控制台,这应该会向您显示更多问题。如果看到任何绑定实现类(已生成),则可以使用名称来确定哪个xml文件有问题(通常是绑定变量是问题所在)
迁移到AndroidX后,我遇到了类似的问题。对我来说,为活动设置contentView时出现错误,其余的数据绑定代码被认为可以。
最后对我有用的是Invalidate Cache & Restart。可悲的是,这似乎是使用AndroidStudio时的常见需求。希望他们能够及时解决此问题。