com.android.dex.DexException: Multiple dex files define的解决办法 (Android Studio)

原创 2015年11月19日 18:48:11

com.android.dex.DexException: Multiple dex files define的解决办法


1. 导致问题出现的原因

com.android.dex.DexException: Multiple dex files define编译问题产生的原因, 几个library引用了"同一个"jar包, 

这个"同一个" 为什么要加上引号呢, 其实这个jar包就名称和功能来说是完全一样的比如, 有两个文件, 

fastjson-1.1.43.android.jar, 虽然这两个文件名称一样, 有可能大小都一样, 但是由于编译这个jar包的java版本不一致, 或者

这两个jar包中的某个类有细微的差别, 这样就会引起上述编译错误. 


android进行dex时会对字节码文件进行优化合并, 如果两个class完全一致, 合并以后就是一个. 但是如果两个类的类名一致而内部确有细微差别, 那么就不能合并.

这就像git中两个人同时更改一个文件引起的冲突一样!!!


知道了引起问题的原因, 就有了对应的解决方案: 不同的library引用同一个jar不就可以了


的确是这样解决的, 我将不同library要引用的jar包拷贝到project的一个目录下, 如libs; 然后不同的libs都引用此jar包. 


2. 解决方法

解决方法1. 

如果我的主项目的依赖关系如下:

compile - Classpath for compiling the main sources.
+--- project :emojicon
+--- project :library:ALib
|    +--- project :BLib
|    |    \--- project :CLib
|    \--- project :library:appcompat
+--- project :library:appcompat
\--- project :library:DLib


如果ALib和DLib都引用了一个a.jar

a. 在project下面建立一个libs目录

b. 将module ALib下libs目录中的a.jar移动到上一步中创建的目录中 并 修改编译脚本(红色为添加的代码)

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile fileTree(dir: '../libs', include: '*.jar')
}

将module DLib下libs目录中的a.jar删除掉 并修改编译脚本(红色为添加的代码)

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile fileTree(dir: '../libs', include: '*.jar')
}

这样就可以了. 



解决方法2

最简单的做法: 直接吧ALib中libs目录中的a.jar复制到DLib的libs中覆盖当前的a.jar



解决方法3

在csdn中有看到了另一种种解决方法===>这里


3. 总结

其实原理是一样的, 保证不同library引用的jar是同一个------------完全相同(拷贝是没有问题的^-^)


Unable to execute dex: Multiple dex files define 解决方法

问题发生概述:        程序编译正常,在用Eclipse调试执行时,报错Unable to execute dex: Multiple dex files define,因为以前也没有遇到这类...
  • mxlxiao7
  • mxlxiao7
  • 2013年05月27日 11:12
  • 195539

Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)

如果你用Android Studio开发,并且要用其他项目作为library,这个问题是很容易出现的。出现这个问题的原因是包的重复引用,意思就是在你自己的项目中引用了某个包,而被你作为library的...
  • hyr83960944
  • hyr83960944
  • 2014年12月09日 16:20
  • 89739

com.android.dex.DexException: Multiple dex files define的解决办法

使用android studio,执行 ./gradlew assembleDebug以后出现如下错误: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex...
  • leiming32
  • leiming32
  • 2015年03月26日 18:23
  • 19818

打包Multiple dex files define Landroid/support/v4问题解决

android studio 打包的时候报错: Error:Execution failed for task ':app:transformClassesWithDexForRelease'. ...
  • jasonhui512
  • jasonhui512
  • 2016年12月28日 18:58
  • 1826

编译错误:com.android.dex.DexException:

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/sup...
  • q617610589
  • q617610589
  • 2015年10月20日 19:11
  • 2395

com.android.dex.DexException: Multiple dex files define(jar包重复引用) 错误解决

前段时间开始转入Android studio,不料果真使用时候遇到些错误,在此记下! 出现这个错误往往是在libs目录下有个jar包,然后在gradle文件中又引用了,即: 共同引用了。 ...
  • u010687392
  • u010687392
  • 2015年07月11日 19:13
  • 2219

Android - 安卓报错Error converting bytecode to dex: Cause: com.android.dex.DexException

Android - 安卓报错Error converting bytecode to dex: Cause: com.android.dex.DexException
  • mythmayor
  • mythmayor
  • 2017年06月05日 14:14
  • 645

打包错误Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files define

昨天准备发布一个版本,算好了时间,在解决完其他问题后预留两个小时来上传。在打包时遇见了问题,害的我加班三个小时。现记录下问题,并整理下解决问题的思路。打包出现问题时的截图图片可能看不太清楚,错误如下:...
  • TangTianYi111
  • TangTianYi111
  • 2017年02月17日 14:36
  • 748

Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files defi

Error:Error converting bytecode to dex: Cause: com.android.dex.DexException: Multiple dex files def...
  • w6718189
  • w6718189
  • 2017年02月17日 17:48
  • 366

关于 OkHttp 依赖冲突问题的解决过程

OkHttp 是一个流行的开源网络请求库。许多第三方库的底层都是使用 OkHttp 实现网络请求,所以 OkHttp 相关的依赖冲突问题就变得很难避免,下文是我所遇到的一次关于 OkHttp 的依赖冲...
  • llmmll08
  • llmmll08
  • 2016年11月18日 16:03
  • 1814
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:com.android.dex.DexException: Multiple dex files define的解决办法 (Android Studio)
举报原因:
原因补充:

(最多只允许输入30个字)