Android开发过程遇到问题,往往当时集中精力、绞尽脑汁解决,过后如释重负的干别的去了,等之后再遇到相同问题,才发现还得再去搜索解决办法,形成不了积累,所以准备记录一下加深印象。正好寻思了好久要尝试写写博客,就用记录问题来开始。
问题场景
开发了好久的App测试没问题终于准备上线,但是打生产包的时候,发生错误,神奇之处在于打debug包完全没问题,报错如下:
涂掉的部分是在升级了gradle之后才出现的提示
定位过程
1.尝试了几次clean rebuild,错误依旧。
2.接着搜索文章,大部分提示是由于引入的第三方包的冲突或者是没有加入java8支持等等。但是这也解释不了debug为什么没问题,检查之后也没有发现有冲突的包和相关的问题。
3.接着怀疑gradle版本的问题,于是壮着胆子选择升级gradle和插件,还好网络给力,升级之后,错误依旧,但是报错内容发生了变化如下
多了这个提示 ,并且指向了具体的类,全局搜索,终于发现了问题所在,居然是有同名的类
话不多说,删掉,编译,问题解决,长舒一口气~~
引申
1.及时升级gradle以及其他工具还是必须的,虽然升级可能比较蛋疼,但是有时候能提供更多的错误信息
2.重复类引起的错误为什么在debug包的时候没有影响,而在release时却通不过,这个问题以及打包过程中发生的异同后续会继续学习
写在最后
引起DexArchiveMergerException这样的错误原因可能有多种,获取到具体的原因才能解决问题。