记DataBinding使用的一个问题:Cannot resolve type 'Const'

471 阅读1分钟

开发工具:Android Studio Bumblebee | 2021.1.1 Patch 3

Gradle版本:7.2

AGP版本:7.1.3

---------------------------------------------------------------------------------

排查:使用DataBinding时,用 import 标签引入 Object 类,一直在编译时报:Cannot resolve type 'Const' ,错误是找不到该类,但是该类实际已引入,能通过Ctrl + 鼠标左键直接导航到该类,DataBinding也没有报错,但是一Build就会产生这个报错信息,几经排查,发现是路径或者类名,不能直接为 const ,只要将类名或包名修改为其他的,例如 SameConst 即可编译通过。

---------------------------------------------------------------------------------

结论:初步结论是DataBinding在编译时会查找名成为 const 的路径或者类名,然后将其作为系统变量存放到其他地方?(此处存疑,有空再看源码),实际结果导致使用 import 标签引入带有 const 的包名或者类名时,DataBinding无法在编译文件夹找到该路径或该路径下的类,最后报出 Cannot resolve type 'Const'

---------------------------------------------------------------------------------

解决方法:将 const 包名 或者 Const 类名,修改为其他,即可编译通过。