| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
smile小馨888
8年前发布

如何解决 Android Studio 上远程依赖包重复的问题(com.android.dex.DexException)

   <p>你们是不是会经常遇到这样的一个错误:com.android.dex.DexException: Multiple dex files define XXXX,一般情况下,是我们项目中引用了重复的库或者jar包引起的,我们找到去掉即可解决,但是如果你远程依赖的两个库里,同时引用了同一个库,你该怎么解决呢?把那两个库都下载下来,自己修改?去掉,再本地引入吗?今天告诉你们一个简单的方法。</p>    <p>说实话,随着现在轮子越来越多,而且很多人都乐于分享和封装一些控件或者开源的库,来共享给大家一起使用。但是经常很多的人封装都在自己库里引起很多其他的第三方库,这就不免有时会发生你引用的两个库都同时引用了同一个第三方库,最坑人的就是他们封装的开源库里使用的都是直接引用,而不是使用 Provided 的方式暴露给你,而是自己直接用了。</p>    <p>我知道有很多人都用强迫症,在使用远程依赖惯了以后,不习惯本地导入的,感觉不舒服了。所以难免就得想办法解决这个问题。</p>    <p>举个例子:</p>    <p>比如:你在使用了一个能生成你符合需求二维码的库,而这个库在内容引用了zxing。但是这里面的扫一扫界面并不好看,你发现了另外一个库里的扫一扫,正好符合你的需求,所以你就在扫一扫这个功能上用了另外一个库,但是这个库也引用了zxing。</p>    <p>当然了,我只是举了一个极端的例子,不会经常发生如上的例子,但是这个错误确实很常见。</p>    <p>如果,就像例子中那样做,你去编译运行项目时,这时,你就会看到一个错误,大约如下意思:</p>    <p>Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’.</p>    <p>com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lcom/google/zxing/BarcodeFormat;</p>    <p>重点看这个错误:</p>    <p>com.android.dex.DexException</p>    <p>这就说明你引用的库或者jar包有重复的地方,所以,这时,你就需要从你引用的远程依赖或者jar中找到重复的,去删掉一个就可以解决了。</p>    <p>是不是很简单,这是在你控制的前提下,如果就像我刚才举得例子一样,如果你远程依赖的两个库,不是本地的哈,同时引用同一个第三方,那该怎么解决呢?</p>    <p>再举个例子:</p>    <pre>  <code class="language-java">compile('com.loonggg.saoyisao.lib:1.1.0')  compile('com.timmy.qrcode.lib:1.4.1') {          exclude group: 'com.google.zxing'  }  </code></pre>    <p>com.loonggg.saoyisao.lib:1.1.0 这个依赖里引用了第三方zxing。</p>    <p>com.timmy.qrcode.lib:1.4.1这个依赖里也引用了zxing这个库,在com.timmy.qrcode.lib:1.4.1的依赖里添加语句 exclude group: ‘com.google.zxing’,意思是编译的时候将group为com.google.zxing的所有library都去除在外,这样com.timmy.qrcode.lib:1.4.1就会自动去引用com.loonggg.saoyisao.lib:1.1.0项目里的zxing依赖了。这样问题就解决了。</p>    <p>但是,到这里我们就需要注意一点:这个exclude group: ‘xxx.xxx.xxx’的方法,只能去除远程依赖的库,如果是你引用的两个远程依赖库A和B,A中是本地依赖的zxing.jar,而B中也是本地依赖的zxing.jar包,那就无解了,只能把A和B这两个库,下载下来自己去修改了,去掉了。当然,如果你项目中同时远程依赖的A和B这两个库,又都重复远程依赖了同一个库,那解决方法跟我上面说的就好解决了。如果一个是远程依赖,一个是本地引用jar包的方式,那也好解决,在远程依赖的那个库,你引用的时候,通过exclude group: ‘xxx.xxx.xxx’的方式就能够解决了。</p>    <p> </p>    <p>来自:http://godcoder.me/2017/05/10/如何解决 Android Studio 上远程依赖包重复的问题/</p>    <p> </p>    
 本文由用户 smile小馨888 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1495451808038.html
Java Android开发 移动开发 Android Studio