bug解决-NoClassDefFoundError
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/xxx/DataBinderMapperImpl
最近刚好是跟小伙伴重新写了公司的Andorid基础库,并且计划打成AAR包放到现有项目里面去进行试用,在把AAR包导入之后项目多次报了同一个错,如下图所示。

-
com.github.CymChad:BaseRecyclerViewAdapterHelper这个依赖库下的DataBinderMapperImpl找不到解决:这个原因是由于我们AAR中使用的三方库依赖为3.X版本的,而项目中用到的是2.X版本的。3.X中添加了对DataBinding的支持导致的。我这里直接将aar中的版本修改之后重新打包。问题解决
-
我们自己写的AAR包中的
DataBinderMapperImpl找不到 解决:我们点到config包下
DataBinderMapperImpl.collectDependencies()方法中可以看到,由于config包依赖了其他几个包,会循环添加那几个包的DataBinderMapperImpl的引用,所以其实就是config包依赖的包漏了导进去[哭笑不得]
总结:这个问题主要是导包的问题,不过我第一眼看到的时候感觉更像是databinding配置问题或者是databinding的xml哪里写的有问题。
题外话-databinding配置

- databinding库已经添加到android gradle 插件了,我们不需要再在依赖中写了,但是我们一定要enable他。
- databinding开启的方法也更新了
android { ... buildFeatures { dataBinding true } } - databinding必须要在所有使用databinding的module中开启,即使该module不直接使用databinding