Android Studio 3.1中DataBinding报错求助:项目突发全生成文件错误
解决DataBinding生成文件突然批量报错的方案
兄弟,我之前也遭遇过一模一样的窘境——项目之前构建完全正常,某天突然所有DataBinding生成文件集体报错,当时头都大了。后来折腾了大半天,总结出几个最靠谱的排查和解决步骤,你挨个试试:
先清缓存+强制重建
这是最基础但见效最快的操作:- 先执行
Build -> Clean Project,等清理完成后再点Build -> Rebuild Project - 如果还不行,直接用Android Studio的缓存重置:
File -> Invalidate Caches...,勾选「Invalidate and Restart」,让IDE彻底重启并清除所有缓存 - 极端情况下可以手动删除项目根目录的
.gradle文件夹和app模块下的build文件夹,再重启AS重建
- 先执行
检查布局文件的语法/逻辑错误
DataBinding生成文件报错90%的根源都在布局里,别光顾着看生成的代码,先回头查xml:- 有没有拼写错误的变量名?比如把
@{user.nickname}写成@{user.nickName}(注意大小写) - 有没有非法的表达式?比如在xml里写了Java/Kotlin不支持的语法,或者空指针风险的表达式(比如
@{user.address.city}没判空) - 有没有未闭合的标签、错位的
<data>标签位置? <import>语句的类路径是否正确?比如把com.example.User写成com.example.model.User(如果类没在model包下的话)
- 有没有拼写错误的变量名?比如把
核对Gradle配置与插件版本
看看是不是不小心碰了配置:- 检查app模块的
build.gradle(或者build.gradle.kts)里,DataBinding开关是否正常开启:android { ... dataBinding { enabled = true } } - 如果最近升级了Android Gradle Plugin(AGP)或者Kotlin版本,可能存在兼容性问题,试试回退到之前能正常构建的版本号
- 检查app模块的
检查数据类/实体类的问题
DataBinding需要正确访问数据字段:- 如果你用Java类,有没有给需要绑定的字段添加getter方法?或者字段是private但没加
@Bindable注解? - 如果是Kotlin的data class,确保字段不是private(默认是public),或者有没有手动修改了getter逻辑导致冲突?
- 如果你用Java类,有没有给需要绑定的字段添加getter方法?或者字段是private但没加
删除损坏的生成文件
有时候自动生成的DataBinding类会因为缓存损坏出问题,手动删除试试:
找到路径app/build/generated/data_binding_base_class_source_out,删掉里面所有内容,然后重新执行Rebuild Project
如果以上方法都没搞定,建议排查最近新增的依赖库或者插件,某些第三方库可能会和DataBinding产生冲突。
内容的提问来源于stack exchange,提问作者Insane Developer
相关产品推荐
相关产品推荐

