今日填一坑
今天在做项目的时候,遇到了一个问题,就将它记录下来,以备不时之需,也希望以后大家在遇到类似的问题的时候,可以迎刃而解。
最近公司需要将一个APP拆分成两个版本,随之问题出现了。在签名打包的时候,报了如下的错误:
Error:Execution failed for task ':app:transformClassesWithJarMergingForRelease'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/hardware/display/DisplayManagerCompat$JellybeanMr1Impl.class
刚看到这个异常的时候,简直就是一脸懵逼啊。这是啥玩意儿啊?
一脸懵逼.jpeg
面对这这一坨不知所以然的东西,踏上了“求学之路”,多方打听(当然少不了,某歌盒某度的强大支持),终于知道了可能是因为这个类文件不唯一导致的,也就是说应用了两个包里面都有这个类。
我勒个去,这不闹呢嘛,之前都好好的额,怎么拆完了就闹这样。瞬间脑袋有点大,还是要继续“求实”啊!
都是泪.jpg
后来通过查找这个类名,知道了在support-v4包和support-compat-25.1.0包中都存在这个类。所以范围就这么缩小在这个两个依赖包上了。
依赖包.png
机智.jpg
那么问题来了,我一看各个module中的libs 之后,又懵逼了。这........
我竟然没看到哪里引用了它。好吧,我承认我菜,但是也太菜了。不过还好,AS可以分析在什么位置引用了这个依赖。那就开始吧。傻傻的我以为删除了类中的引用就可以解除依赖了。
分析png.png
好吧,也分析了,类中的@Nullable也都删掉了,导入包也删掉了。您也该离开了吧!
离开.jpg
结果啊结果啊!报警也是不能解救我这新一代良好市民的。它依然屹立不倒。仍然起着作用。
牛逼.jpg
哎,我认怂。咱就继续看看有没有其他方法吧!尝试万种方法之后!终于小有成效!方法是这样的,在build.gradle
中的dependencies
下加上下面这几行代码就可以把我的问题给解决了!
//v4包于compat包冲突解决
allprojects {
configurations {
all*.exclude group: 'com.android.support', module: 'support-compat'
}
}
惊讶.jpg
好吧,反正折腾了这么久我最后是解决了自己的问题,也学到了一个新知识。不知道看了这篇文章的你,有没有get到呢?
各位仁兄,如果有更好的方法可以教一下小弟。谢谢!!!
最后附上咱自个儿的微信公众号,请广大Android爱好者关注。
网友评论