Android引入外部库编译正常运行报java.lang.NoSuchMethodError错误
问题原因
- Jetpack Compose依赖版本冲突:项目同时引入了
androidx.compose.runtime:runtime:1.0.0-beta01和androidx.compose:compose-runtime:0.1.0-dev10两个差异极大的Compose运行时版本,版本不兼容直接导致运行时类、方法匹配失败。 - Lottie Compose与Compose版本不匹配:
com.airbnb.android:lottie-compose:4.0.0要求最低Compose版本为1.0.0稳定版,与项目中使用的beta/开发版Compose完全不兼容。编译阶段调用的是本地可识别的方法签名,打包后实际加载的是依赖包中不匹配的类文件,所以运行时抛出NoSuchMethodError。 - Support库与AndroidX混用:项目同时引入了旧版
com.android.support系列依赖和AndroidX系列依赖,两类库命名空间冲突,会触发各类类加载异常。
修复方案
- 统一Compose版本:删除低版本的
androidx.compose:compose-runtime:0.1.0-dev10依赖,所有Compose相关依赖统一使用同一个稳定版本,推荐升级至1.0.0及以上正式版。 - 适配Lottie Compose版本:如果继续使用Compose 1.0.0-beta01,需降级lottie-compose至对应的3.x版本;如果保留lottie-compose 4.0.0,需将所有Compose依赖升级至1.0.0稳定版及以上。
- 清理旧Support库:删除所有
com.android.support开头的旧依赖,统一使用AndroidX对应的依赖替换。 - 重构项目:修改依赖后先执行
Clean Project,再执行Invalidate Caches / Restart清空Android Studio缓存,之后重新构建即可。
内容的提问来源于stack exchange,提问作者Rodrigo Barboza
相关产品推荐
相关产品推荐

