升级Android Studio 3.1后Data Binding自动生成失效求助
我来帮你搞定这两个升级后遇到的Data Binding小问题,都是AS 3.x版本常见的适配坑,试试下面的方案:
一、Data Binding变量无法自动生成,需手动构建
检查Gradle配置匹配度
确保app模块的build.gradle里正确开启Data Binding,同时gradle插件版本和AS 3.1对应:// app/build.gradle android { ... dataBinding { enabled = true } }项目根目录的
build.gradle里,gradle插件版本建议用3.1.x的稳定版:// project/build.gradle dependencies { classpath 'com.android.tools.build:gradle:3.1.4' }配置完后点击工具栏的
Sync Project with Gradle Files同步一下。清理AS缓存
缓存紊乱是这类问题的高发原因,直接通过File -> Invalidate Caches / Restart...选择Invalidate and Restart,重启后AS会重新生成索引和Binding类。验证布局文件结构
Data Binding要求布局必须以<layout>为根节点,比如:<layout xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/abc" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </layout>如果根节点不是
<layout>,Binding类根本不会生成,更别说自动更新变量了。
二、ViewBinding点击无法跳转至布局文件
检查Data Binding插件状态
打开Settings -> Plugins,搜索Data Binding,确认插件处于启用状态(如果是灰色的就勾选后重启AS)。触发索引更新
有时候AS的索引没跟上布局变化,你可以在布局文件里随便修改一点内容(比如加个空格再删掉),保存后AS会重新索引;或者点击工具栏的Sync Project with Gradle Files强制同步。标记生成目录为源码根
生成的Binding类默认在build/generated/data_binding_base_class_source_out路径下,右键这个文件夹,选择Mark Directory as -> Generated Sources Root,让AS正确识别这个目录的源码,就能恢复跳转功能了。
内容的提问来源于stack exchange,提问作者Harry T.

