解决第三方包内jar包冲突

2017-11-01 01:30:45

以这个错误

Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-oracle/bin/java'' finished with non-zero exit value 2

和 

Error: Execution failed for task ': app: packageAllDebugClassesForMultiDex'. > Java.util.zip.ZipException: duplicate entry: bolts / AggregateException.class

这两个错误为例做讲解


首先出现

Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-oracle/bin/java'' finished with non-zero exit value 2

这个问题就是因为引入jar包的冲突,这时我们可以在build.gradle中添加如下代码,下方单独的是添加的代码


[java] view plain copy

  1. defaultConfig {  

  2.         applicationId ""  

  3.         minSdkVersion 14  

  4.         targetSdkVersion 21  

  5.         versionCode 19  

  6.         versionName "1.2.7"  

  7.         // dex突破65535的限制  

  8.         multiDexEnabled true  

  9.     }  

[java] view plain copy

  1. multiDexEnabled true  



并引入如下包


[java] view plain copy

  1. dependencies {  

  2.     // 编译libs目录下的所有jar包  

  3.     compile fileTree(dir: 'libs', include: ['*.jar'])  

  4.     //使用multidex support library让Android5.0之前的版本也能在一个apk里面包含多个.dex文件,防止一个.dex超过65536个方法数  

  5.     compile 'com.facebook.fresco:fresc'  

  6.     compile 'com.android.support:multidex:1.0.1'  

  7.     

  8.       

  9.  }  


[java] view plain copy

  1. compile 'com.android.support:multidex:1.0.1'  



这时候我们在run app,

发现又会出现这个错误

Error: Execution failed for task ': app: packageAllDebugClassesForMultiDex'. > Java.util.zip.ZipException: duplicate entry: bolts / AggregateException.class


这时候不要着急,我们仔细看看,发现提示blots/AggregateException.class,这就说明是这里引入重复,那么我们如果在libs下没有发现从external library看看,

这时候从external library中发现了以下包


这个和引入的jar包中有冲突,所以我们要去掉这里,所以找到来源,发现是引入这个才引入的bolts


所以这时候重点来了,我们需要将

[java] view plain copy

  1. compile'com.facebook.fresco:fresco:0.6.0+'  




改成这样

[java] view plain copy

  1. compile('com.facebook.fresco:fresco:0.6.0+') {  

  2.         exclude group: 'com.parse.bolts',  

  3.                 module: 'bolts-android'  

  4.     }  




该完之后再次run app

恭喜您,运行成功


  • 2020-11-30 09:04:02

    js中set和get方法

    1. get和set是方法,因为是方法,所以可以进行判断 2. get一般是要返回的;而set是设置,不用返回 3. 如果调用对象内部的属性约定的命名方式是变量名前加_

  • 2020-12-01 16:10:12

    IntelliJ IDEA之代理配置 anyproxy

    网络号,真是太爽了,真的,如果又了好的网络,开发真是事半功倍,所以,大家开发前,一定要把自己的网络给整好。 会给你节省不少时间呢。

  • 2020-12-01 16:14:54

    HTTP状态码429的含义

    发生429是服务器接口并发太多引起的,可根据代码进行修改,放开限制次数

  • 2020-12-01 16:19:26

    vue中动画分布解析

    enter, enter-active, enter-active-to, (开始 进入阶段的)第1帧 属性值,到 (默认属性值 的过渡阶段),移除enter动画, leave, leave-active, leave-active-to (开始 离开 阶段的)第1帧 默认属性值,到 (属性值 的过渡阶段),移除leave动画

  • 2020-12-01 16:21:47

    Meteor与express结合开发

    Meteor本质上是一个已经公开了连接 http服务器的节点应用程序,这意味着您可以像下面这样定义服务器路由:,如果您坚持使用Express,则可以将Express路由注册为Connect中间件,如下所示:

  • 2020-12-01 16:25:32

    nuxtjs引入jquery

    nuxt引入jQuery库 nuxtjs如何添加 Webpack 插件?

  • 2020-12-01 16:43:37

    fieldset标签做输入框

    比如 vuetify中的 input组件,就用到了fieldset做边框, 这个时候我们想改边框,却找不到border,因为fieldset是靠color来修改边框颜色的。