AndroidStudio "java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/...."异常的解决
开发环境:
AndroidStudio 3.1.3
事情的经过:
由于工作需要,将一直以Eclipse维护的代码移植到Android Studio中,为与H5交叉编译做准备,将代码移植过去后,修改掉N多错误后,终于编译成功了,偶长舒了一口气,以为终于结束了,没成想好事多磨,在测试的过程中,发现进入某个页面后,整个程序就崩溃了,没有明显的红色异常。仔细阅读log后,返现有几行蓝色的System.err级别的异常信息,具体如下:
"java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/..../RecyclerView"
没有头绪,因为这些代码在Eclipse时,是久经考验的,而且在AS上也编译通过了-_-|||
于是,我去网上一阵搜罗,有朋友提醒说,可能是在开发的过程中引入多个第三方库,而在调用的时候 ,出现了不统一的问题,所以才会如此。
恩,听起来好像很有道理,我根据网友的提示,进行了检查。
检查发现,我两个Moudle的模块Gradle文件中的“dependencies”部分确实不一样,一个使用的是“recyclerview-v7:28.0.0”,一个使用的是“recyclerview-v7:25.3.1”。
修改方案:
于是进行了如下修改:
1. 将每个Moudle的Gradle文件中的“dependencies”部分,全部统一成“recyclerview-v7:25.3.1”。
2.在每个Moudle的Gradle文件中,添加强制统一的配置:
configurations.all {
resolutionStrategy {
eachDependency { details ->
// Force all of the primary support libraries to use the same version.
if (details.requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.1'
}
}
}
}
}
其中一个Moudle的Gradle的截图如下:
最终结果:
修改后,进行同步,然后编译,编译成功。怀着忐忑的心情又跑了一遍,OK,好使了,看来确实是这个原因,感谢网友的慷慨分享,谢谢~~
唉,目前以我的段位,AS之与我,就像那样不熟的猫,忐忑,无奈,又心惊胆战,还需要继续努力啊,加油加油加油,啊。
你需要加么,嘿嘿~OVO~
参考内容:
再次感谢网友的慷慨分享,谢谢~~
https://www.jianshu.com/p/6dccb97a1199
https://www.cnblogs.com/changyiqiang/p/10267308.html