Android Studio中如何解决重复依赖导致的具体分析步骤 Android Studio中如何解决重复依赖导致的app:transformClassesWithJarMergingForDebug

转载: https://blog.csdn.net/cx1229/article/details/52786168

Android Studio中如何解决重复依赖导致的app:transformClassesWithJarMergingForDebug

<div class="article-info-box">
    <div class="article-bar-top d-flex">
                                            <span class="time">2016年10月11日 10:59:31</span>
        <div class="float-right">
            <span class="read-count">阅读数:13906</span>
                                        </div>
    </div>
</div>
<article>
    <div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post" style="height: 1414px; overflow: hidden;">
                <div class="markdown_views">
            <p>当使用maven导入依赖时,可能会出现不同的依赖包含了同一个jar,在编译期间不会报错。可一旦run app的时候,就会报</p>
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: xxx.class
   
   
  • 1
  • 2

解决的方法是在引入依赖的时候把相同的jar去除掉

比方说,我同时引入了bmob和retrofit2的依赖

compile ('cn.bmob.android:bmob-sdk:3.5.1')
compile ('com.squareup.retrofit2:retrofit:2.1.0')
compile ('com.squareup.retrofit2:converter-gson:2.1.0')
   
   
  • 1
  • 2
  • 3

因为bmob底层也是通过引入okhttp来实现的,所以我报的错是:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/gson/annotations/Expose.class
   
   
  • 1
  • 2

这时候我们可以发现

 com/google/gson/annotations/Expose.class
   
   
  • 1

最后面有一个Expose.class
我们可以通过Search Everywhere去定位这个类(默认快捷键是双击shift)。

全局搜索相同类

看,通过搜索的确发现了两个一模一样的类,而且来自不同的依赖,而重复的类库正是gson。此时再回想起我刚刚是不是添加过一个

compile ('com.squareup.retrofit2:converter-gson:2.1.0')
   
   
  • 1

好了,找到问题的根源的。那我们现在如何去除相同的类库呢,很简单:
在AS中,选择以project显示项目,找到最下面的External Libraries,然后继续找,找到相对应的类库:

gson

如图依次点开之后发现了一个pom.xml,这里面就是关于这个jar的一些配置文件,点开之后长这个样子

pom.xml

往下找,发现了一个gson的引用

gson引用

没错,这个就是导致报错的直接原因。复制里面groupId,到你的app的build.gradle里,找到那个依赖,添加{exclude group: 'com.google.code.gson'}
把这个groudId的引用去除掉。如下图所示

去除重复依赖

好了,到此问题就解决了,如果你有多个重复依赖的话,就按照本文所给出的方法,一个一个去重。





阅读更多

    <div class="article-bar-bottom">
            <div class="article-copyright">
        版权声明:本文为博主原创文章,转载必须注明出处。            https://blog.csdn.net/cx1229/article/details/52786168       </div>
                    <div class="tags-box artic-tag-box">
        <span class="label">文章标签:</span>
                    <a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=android studio&amp;t=blog" target="_blank">android studio                     </a><a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=maven&amp;t=blog" target="_blank">maven                       </a><a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=android&amp;t=blog" target="_blank">android                       </a>
    </div>
                    <div class="tags-box">
        <span class="label">个人分类:</span>
                    <a class="tag-link" href="https://blog.csdn.net/cx1229/article/category/6871213" target="_blank">Android踩坑                      </a>
    </div>
                </div>

<!-- !empty($pre_next_article[0]) -->
    </div>

猜你喜欢

转载自blog.csdn.net/willba/article/details/80627915
今日推荐