我们在开发过程中避免不了会引入第三方或我们自己生成的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);
}
如果你的JDK版本是下图所示,将你的JDK版本更改为1.7。
方法 ④ :
在混淆的时候添加包名进一步混淆属性,导致多个jar包同时引用时,产生该异常,解决办法是去除这个属性,简单粗暴。
以上就是解决这个异常的三种办法,由上而下逐个尝试,希望对大家有帮助!