你们是不是会经常遇到这样的一个错误:com.android.dex.DexException: Multiple dex files define XXXX,一般情况下,是我们项目中引用了重复的库或者jar包引起的,我们找到去掉即可解决,但是如果你远程依赖的两个库里,同时引用了同一个库,你该怎么解决呢?把那两个库都下载下来,自己修改?去掉,再本地引入吗?今天告诉你们一个简单的方法。
说实话,随着现在轮子越来越多,而且很多人都乐于分享和封装一些控件或者开源的库,来共享给大家一起使用。但是经常很多的人封装都在自己库里引起很多其他的第三方库,这就不免有时会发生你引用的两个库都同时引用了同一个第三方库,最坑人的就是他们封装的开源库里使用的都是直接引用,而不是使用 Provided 的方式暴露给你,而是自己直接用了。
我知道有很多人都用强迫症,在使用远程依赖惯了以后,不习惯本地导入的,感觉不舒服了。所以难免就得想办法解决这个问题。
举个例子:
比如:你在使用了一个能生成你符合需求二维码的库,而这个库在内容引用了zxing。但是这里面的扫一扫界面并不好看,你发现了另外一个库里的扫一扫,正好符合你的需求,所以你就在扫一扫这个功能上用了另外一个库,但是这个库也引用了zxing。
当然了,我只是举了一个极端的例子,不会经常发生如上的例子,但是这个错误确实很常见。
如果,就像例子中那样做,你去编译运行项目时,这时,你就会看到一个错误,大约如下意思:
重点看这个错误:com.android.dex.DexException这就说明你引用的库或者jar包有重复的地方,所以,这时,你就需要从你引用的远程依赖或者jar中找到重复的,去删掉一个就可以解决了。
是不是很简单,这是在你控制的前提下,如果就像我刚才举得例子一样,如果你远程依赖的两个库,不是本地的哈,同时引用同一个第三方,那该怎么解决呢?
再举个例子: