Multiple dex files define (重复引用)
原因:在自己的项目中引用了某个“包”,而被你作为library的项目也引用了同一个“包”,引起编译错误。“包”是指类库里面出现了相同类名,不仅局限于jar包。android进行dex时会对字节码文件进行优化合并, 如果两个class完全一致, 合并以后就是一个。 但是如果两个类的类名一致但内部确有细微差别, 那么就不能合并。
情况一:主 module 和 library module在library中同时引入相同的“包”
错误日志:
1.1 错误原因:重复引用
1.2 解决方式:只保留一个
将libs文件夹下的V4包删除。
备注:能用compile引入的,尽量用compile引入。
情况二: 主 module 中多个依赖引用了相同的“包”
错误日志:
2.1 错误原因: 引用了同名的类
打开External Libraries查看:
确实出现了同名的类。
2.2 解决方式:找到引用了不需要的类的依赖库添加以下配置
support-compat-25.1.0是由于引入 compile ‘com.jakewharton:butterknife:8.5.1’生成的,所以去掉这个类库里的v4包依赖,找到 compile ‘com.jakewharton:butterknife:8.5.1’修改为:
备注:不知道那个类引入的,可以把引用注掉,在External Libraries查看是否是该类库导入的冲入包。