升级Android Studio 3.1.0后Android Support插件报错求助
解决Android Studio 3.1.0升级后DataBinding报
NoClassDefFoundError: ExtKt的问题 我之前也踩过这个坑!升级AS 3.1后DataBinding突然报这个类初始化错误,折腾了好一阵才搞定,给你几个亲测有效的解决方案:
确保Gradle插件与AS版本匹配
AS 3.1.0对应的Gradle插件版本必须是3.1.0,别用更高或更低的版本,否则很容易出现兼容性问题。在项目根目录的build.gradle里检查:buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.0' } }同时确保模块的
build.gradle里正确开启DataBinding:android { ... dataBinding { enabled = true } }清理缓存+彻底重建项目
AS升级后的缓存冲突是这类问题的高发原因,按这个步骤来:- 执行菜单栏的
Build -> Clean Project - 接着执行
Build -> Rebuild Project - 如果还是不行,直接删除项目根目录下的
.gradle、build文件夹,再重启AS并选择File -> Invalidate Caches / Restart...
- 执行菜单栏的
检查Kotlin版本兼容性
因为你项目用了Kotlin,AS 3.1.0搭配Kotlin插件1.2.30是比较稳定的组合,过高或过低的Kotlin版本可能和Gradle插件不兼容。在根build.gradle里确认:buildscript { dependencies { classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.30' } }排查混淆与自定义DataBinding代码
如果项目开启了混淆,要确保DataBinding相关类没被误混淆,在proguard-rules.pro里添加:-keep class android.databinding.** { *; } -keep class com.yourpackage.databinding.** { *; } // 替换成你的包名另外检查自己写的
BindingAdapter或者DataBinding扩展类有没有语法错误,这类自定义代码也可能触发类加载异常。多模块项目统一配置
如果是多模块项目,要保证所有模块的Gradle插件版本、DataBinding开启状态完全一致,避免跨模块的依赖冲突。
要是以上方法都没解决,可以用./gradlew dependencies命令生成依赖树,排查有没有第三方库自带了旧版本的DataBinding相关类,导致版本冲突。
内容的提问来源于stack exchange,提问作者akamuza
相关产品推荐
相关产品推荐

