关于support包版本冲突引发的惨案
关于support-V4包版本冲突引发的惨案
昨天上线了新版本 ,今天早上怀着轻松喜悦的心情来到公司,准备泡上一杯咖啡,看点新闻,小憩一下,然后再来熟悉一下下一个版本的需求。
真实情况
来到公司,测试小姐姐来告诉我说昨天发布的版本有一个bug,你看一下吧,一脸懵逼的我赶快打开Android Studio准备来运行一下,尼玛,项目运行不了了,报错信息如下:
Attribute “layout_anchorGravity” already defined with incompatible format
看字面意思,就是说属性名冲突了,昨天加班到3点,release之后就提交了代码,这好好的怎么就抽了呢,吓得我赶快去问了一下度娘,看到有大神说把自己自定义的这个属性名改了就好了,我一想,我这也没用自定义属性啊,难道是第三方控件的自定义属性?然后老夫忐忑的在项目里搜索了一下这个layout_anchorGravity,发现有一个三方库里有这个属性,但是怎么找也找不到位置,正当郁闷之际,和我搭档的小姐姐说,会不会是support包版本冲突呀,她说她看到网上有人说是这个原因导致的。
于是乎,按照小姐姐的路子,在Android Studio右侧菜单:gradle->:app->Tasks->help->dependencies,可以查看到项目的依赖关系.控制台输出信息如下:
- 顿时感觉看到了希望
看到这个,顿时眼前一亮,这依赖关系,清楚的不要不要的,每个三方库都依赖了什么库,还有对应的版本号情况都一目了然,最后经过仔细比较,发现时自己依赖的一个时间选择控件默认使用了最新版的support包,导致support包版本冲突,最后在build文件中的依赖中剔除了该三方库对support库的依赖,完美解决了问题。
-
去除第三方库对support的依赖的代码如下
//日期选择器
compile(‘cn.qqtheme.framework:WheelPicker:latest.release’) {
exclude group: ‘com.android.support’
}