com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 异常处理

我们在开发过程中避免不了会引入第三方或我们自己生成的jar包或库,本文就讲述一下,引入的一个异常处理。

异常:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

原因:

引入的jar包或库中包含的其他依赖,与原有项目中的依赖一致,导致重复引入,或两者的资源存在重叠(多jar包引入时,不同jar包名但相同packageId和类名、assets文件夹内的资源名称相同),导致异常产生。

解决:

办法 ①:

在项目的build.gradle文件中查看自己导入的依赖,看看是否有重复的,如果有的话删除掉,重新进行编译;检查自己生成jar包的源代码中的导入依赖是否与原有项目中依赖一致,如果一致选择删除原有项目相关依赖,改用新引入的jar包中的依赖,重新进行编译。

办法 ②:

使用Android项目方法数超过65535,解决办法进行处理。

谷歌官方推荐使用MultiDexApplication,具体步骤如下

Gradle 配置:

defaultConfig {   
       applicationId "XXX"
       minSdkVersion 14
       targetSdkVersion 23
       multiDexEnabled true
}
dependencies {
    compile 'com.android.support:multidex:1.0.3'
}

Application 类重写方法:

@Override
protected void attachBaseContext(Context base) {
   super.attachBaseContext(base);
   MultiDex.install(this);
}
或者直接让你的Application继承 MultiDexApplication, 就不需要再重写上述方法。
方法 ③ :

如果你的JDK版本是下图所示,将你的JDK版本更改为1.7。


方法 ④ :

在混淆的时候添加包名进一步混淆属性,导致多个jar包同时引用时,产生该异常,解决办法是去除这个属性,简单粗暴。


以上就是解决这个异常的三种办法,由上而下逐个尝试,希望对大家有帮助!微笑


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值