Android Studio 3.0.1升级至3.1.0后DataBinding功能异常求助
我之前升级Android Gradle Plugin到3.1.x版本时也踩过这个DataBinding的坑,给你几个亲测有效的解决思路,不用每次都重启AS:
优先用Rebuild替代普通Make操作
普通的Make Project是增量编译逻辑,但3.1.0版本的AGP对DataBinding的增量生成规则做了调整,有时候修改XML的ID后,增量编译不会触发Binding类的重新生成。你可以直接执行Build -> Rebuild Project,强制重新编译整个项目,这样新的ID就能被识别,比重启AS高效太多。手动清理缓存并重新Sync
如果Rebuild还是没效果,可以清理缓存但不用重启AS:- 先关闭当前项目,删除项目根目录下的
.gradle、.idea文件夹,以及模块目录下的build文件夹 - 重新打开项目,执行
File -> Sync Project with Gradle Files
或者在AS内直接执行File -> Invalidate Caches...,只选择Invalidate(不要选Restart),完成后再执行Rebuild操作。
- 先关闭当前项目,删除项目根目录下的
检查DataBinding的Gradle配置是否正确
确保你的app模块build.gradle里的DataBinding开关正常开启,没有多余配置干扰:android { // 你项目对应的编译版本配置 compileSdkVersion 28 buildToolsVersion "28.0.3" defaultConfig { // ... 你的其他项目配置 } dataBinding { enabled = true } }如果项目里用到了其他注解处理器,也要确认它们和AGP 3.1.0版本兼容。
排查XML文件的隐藏语法错误
有时候XML里的小问题(比如DataBinding表达式写错、标签未闭合)会导致Binding类生成失败,但编译时没有明显报错,这时候修改ID也不会更新Binding类。你可以打开Build -> Build Output,切换到View标签,查看有没有DataBinding相关的警告或错误信息,修复后再Rebuild。尝试升级到AGP 3.1.x的后续小版本
3.1.0本身可能存在一些DataBinding的bug,后续发布的3.1.4等小版本修复了不少这类问题。你可以尝试把AGP版本升级到3.1.x的最新稳定版,比如修改项目根目录的build.gradle:dependencies { classpath 'com.android.tools.build:gradle:3.1.4' }然后Sync项目,再测试问题是否解决。
如果以上方法都没能解决,你可以检查下项目里有没有自定义的DataBinding插件或者第三方注解处理器,它们可能和AGP 3.1.0存在兼容性冲突。
内容的提问来源于stack exchange,提问作者hetuka kodekar

