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

昨天准备发布一个版本,算好了时间,在解决完其他问题后预留两个小时来上传。在打包时遇见了问题,害的我加班三个小时。现记录下问题,并整理下解决问题的思路。

打包出现问题时的截图

打包出现问题是的截图

图片可能看不太清楚,错误如下:

Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;

蹩脚的翻译:

错误:将字节码文件转换为dex文件出现错误
原因:异常为:com.android.dex.DexException,Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs这一个类出现了多个dex文件的定义

经过一番搜索,我的理解为:要使用到的一个类在项目中有多个librariy都存在。如果只是照这样理解,就应该在那几个librariy添加依赖时移除掉AccessibilityServiceInfoCompatIcs这个类,但是搜遍全网并没有方法可以做到。
于是,我就在添加依赖时,移除点含有AccessibilityServiceInfoCompatIcs这个类的librariy,因为,一般这些包含同一个相同类的library功能肯定是相同的,不用担心,移除了重复的library会导致项目出现错误。

具体方法:

1、Ctrl + N 查找到项目中含有AccessibilityServiceInfoCompatIcs这个类的librariy (注意:最近又遇到一个library重复的问题,但是通过Ctrl + N根本找不到会有两个或者更多的library包含了这一个文件,所以,需要自己判断引入重复的library)

这里写图片描述

可以看到一共有三个v4包含有这个类

2、对应查看项目中含有AccessibilityServiceInfoCompatIcs类的librariy,找到External Libraries

这里写图片描述

3、移除重复librariy,只保留一个.
这时候想要移除重复包,应该是有两种情况。
一种情况是,可以直接在libs文件夹中可以找到,那么就直接移除即可。对于有的地方移除了会报错,只需添加依赖那唯一一个保留下来的librariy即可。
另一种情况就是在libs文件夹中找不到,我这儿就是。就说明这个librariy是在别的librariy里面。这比较头疼,因为我也不知道我添加依赖的library里面到底包含哪些library。
不过,我想到了一个笨方法:在给一个library添加依赖后,编译完成后在External Library可以查看到对应的library,那我就不断去掉对应依赖的library,不断的查看External Library中library,如果在移除掉一个library后在External Library中我们需要移除的library(我这儿就是关注那2个v4包和support-compat包)也跟着没了,那就说明该library中包含那个重复library(我这儿就是那2个v4包和support-compat包)。

我在不断的注释移除依赖库,终于找到了第一个library,在移除掉cn.finalteam:galleryfinal:1.4.8.7这个库之后,support-v4-23.1.1在External Library中消失了。其他几个就不一一列举了。

这里写图片描述

在找到对应的library之后,就移除重复的库。

在build.gradle中修改compile ‘cn.finalteam:galleryfinal:1.4.8.7’为格式如下
compile(‘cn.finalteam:galleryfinal:1.4.8.7’) {
exclude group: “com.android.support”, module: “support-v4”
}
cn.finalteam:galleryfinal:1.4.8.7是包含v4包的library,”support-v4”是需要移除的v4包
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值