今日填一坑

作者: 程序员丶星霖 | 来源:发表于2017-06-14 17:47 被阅读126次

    今日填一坑

    今天在做项目的时候,遇到了一个问题,就将它记录下来,以备不时之需,也希望以后大家在遇到类似的问题的时候,可以迎刃而解。
    最近公司需要将一个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爱好者关注。

    相关文章

      网友评论

      本文标题:今日填一坑

      本文链接:https://www.haomeiwen.com/subject/obkeqxtx.html