解决第三方包内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-12-01 17:25:39

    axios并发操作

    很多时候,我们需要同时向后端进行多个请求,当所有请求都返回数据后,再进行一些操作。

  • 2020-12-02 14:45:35

    Remote-SSH使用教程 VSCode

    微软开发了一个VSCode的插件Remote-SSH,可以说是目前比较完美的解决了在windows下开发linux程序的问题。

  • 2020-12-02 22:56:09

    android设置禁止横屏失效崩溃

    误区,其实这两个代码都不是禁止横屏的,可以说根本没有禁止横屏的代码,这两个代码是设置竖屏的。 并且安卓先检测xml代码,如果是竖屏就直接展示竖屏的,但是如果java代码中设置的横屏,他会先展示竖屏咱展示横屏的 。

  • 2020-12-03 10:43:18

    xshell 连接 wsl

    装上 ubuntu on windows 后,默认要先打开 cmd, 再运行 bash 进入 ubuntu 的 shell。 但是这个shell很难看,配色不好就算了,还存在各种复制粘贴麻烦、默认没进入 home 目录、各种报警声等问题。所以尝试用 xshell 登陆 ubuntu

  • 2020-12-03 10:48:41

    在window10和Linux子系统 WSL如何互传文件

    想将 window下下载的文件上传到 linux 子系统中,如何用命令实现,其实可以将文件直接拖拽到 linux 在window下的目录即可(C:\Users\yunan.hu\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs)但是在linux下用命令怎么实现呢?