duplicate entry: org/apache/commons/codec/DecoderException.class编译不过问题解决
duplicate entry: org/apache/commons/codec/DecoderException.class编译不过问题解决Bug问题描述:compileSdkVersion 23buildToolsVersion “23.0.3”minSdkVersion 15targetSdkVersion 19程序在android studio自带的虚拟机上可以运行,虚拟机 sd
duplicate entry: org/apache/commons/codec/DecoderException.class编译不过问题解决
Bug问题描述:
- compileSdkVersion 23
- buildToolsVersion “23.0.3”
- minSdkVersion 15
- targetSdkVersion 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但是期间没有同步过)。
更多推荐
所有评论(0)