duplicate entry: orgapachecommonscodecDecoderException.class编译不过问题解决

    xiaoxiao2026-06-13  6

    duplicate entry: org/apache/commons/codec/DecoderException.class编译不过问题解决

    Bug问题描述:

    compileSdkVersion 23buildToolsVersion “23.0.3”minSdkVersion 15targetSdkVersion 19程序在android studio自带的虚拟机上可以运行,虚拟机 sdk23测试机coolpad5950 sdk 16 编译会失败无法生成apk在虚拟机上跑成功后的apk直接装到真机上无法启动

    解决过程

    踩坑

    Error:Execution failed for task ‘:app:transformClassesWithJarMergingForDebug’. com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/ogaclejapan/smarttablayout/utils/BuildConfig.class

    最开始报的是上面这个错误, Smarttablayou是一个三方项目,我用它来实现顶部的tab。

    compile’com.ogaclejapan.smarttablayout:library:1.6.1@aar’ compile ‘com.ogaclejapan.smarttablayout:utils-v4:1.6.1@aar’ //compile ‘com.ogaclejapan.smarttablayout:utils-v13:1.6.1@aar’

    这个错误已经解决,原因是v13和v4冲突了,注掉一个就好了

    真正的bug

    Error:Execution failed for task ‘:app:transformClassesWithJarMergingForDebug’. com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entryorg/apache/commons/codec/DecoderException.class

    前面都一样后面换了一个类而已,所以搜出来的解决app:transformClassesWithJarMergingForDebug’问题的,这个问题大概是说你引用的多个三方项目里又同时引用了别的。而解决冲突方法就类似于下面这种方式

    compile (group: ‘com.zendesk’, name: ‘sdk’, version: ‘1.0.0.1’){ exclude group: ‘com.squareup.picasso’ }

    然后各种试,最后甚至删掉了这个项目还是会报错,很开心,可以排除这个三方的嫌疑了,后来注意力转移到出问题的class来自于apache的包,之前处理过一个问题就是,从某一个版本JDK以后,默认没有org.apache.http包的引用,需要手动导入,而eclipse推荐的是导入jar包,android studio则需要在gradle的配置中加一句话,但是这个坑很早以前就已经才过了,抱着试试看的态度,查看了一下就是这个问题。用eclipse的方式在studio中进行了处理。修改方式为删掉libs下的jar包,然后再build.gradle(Module:app)下加:

    useLibrary org.apache.http.legacy

    疑问

    第一,为什么模拟器不会出现这个问题,第二为什么这个问题解决过一次,他又会自己出现(有svn但是期间没有同步过)。

    转载请注明原文地址: https://ju.6miu.com/read-1310474.html
    最新回复(0)