升级Android Studio 3.1.0与Gradle 4.4后ViewModel类找不到求助
嗨,我之前升级Gradle版本的时候也碰到过类似的DataBinding编译报错,给你几个实用的排查和解决思路:
1. 先确认DataBinding配置是否合规
打开Module级别的build.gradle,确保DataBinding是开启状态,而且语法适配Gradle 4.4的要求:
android { ... dataBinding { enabled = true } }
如果你的项目已经迁移到AndroidX,还要检查相关依赖版本是否和Gradle 4.4兼容,依赖不匹配是这类问题的常见诱因。
2. 清理旧构建缓存,重新构建
Gradle升级后,之前的构建缓存很可能残留了旧的类引用,导致编译混乱。试试这几步:
- 点击Android Studio顶部菜单栏的
Build->Clean Project - 接着选择
Build->Rebuild Project - 嫌麻烦的话也可以直接手动删除
app/build文件夹,再重新执行构建
3. 检查ViewModels类的包名和访问权限
确认你的ViewModels类确实在ro.marianpavel.jurnaldebord这个包下面,而且类的访问修饰符是public——DataBinding自动生成的代码需要访问到这个类,要是类是默认包访问或者private的,肯定会报“找不到符号”的错误。
4. 排查布局文件中的DataBinding变量声明
打开对应的activity_create_car.xml布局文件,检查里面引用ViewModels的地方有没有拼写错误,比如变量声明:
<data> <variable name="viewModel" type="ro.marianpavel.jurnaldebord.ViewModels" /> </data>
包名和类名必须完全一致,哪怕一个字母大小写错了都会出问题。
5. 匹配Gradle插件和Gradle版本
Gradle 4.4对应的Android Gradle插件版本一般是3.1.x系列,打开项目根目录的build.gradle,检查插件版本是否匹配:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.4' // 这个版本和Gradle 4.4是兼容的 } }
插件和Gradle版本不匹配经常会引发各种奇怪的编译异常,这个坑一定要避开。
如果上面的方法都试过还是不行,那就试试Invalidate Caches:点击File -> Invalidate Caches / Restart,选择Invalidate and Restart,让Android Studio彻底清理缓存后重启,很多顽固的编译问题都能这么解决。
内容的提问来源于stack exchange,提问作者Marian Pavel

