Multiple dex files define Landroid/support/annotation/AnimRes

今天在写友盟推送的时候,因为测试模式下的设备总是报红,可能是onAppStar 没有注册好,可能是没有用官方的v4包等等,各种原因。下面就是我添加官方的v4 包和本地gradle dependences 冲突的解决办法:

1.首先查看项目 gradle的依赖是否用到重复的包

这里写图片描述
我在查看依赖的时候,发现依赖包里面存在v4 的冲突,

通过 exclude mode: ‘support-v4’除去里面使用的v4 包

但是使用之后仍然不成功,因为v4 里面还有一个annotation 的引用 和下面 依赖里面的 v7-recyclerview 也使用了 annotation 这个jar ,所以导致 Multiple dex files define Landroid/support/annotation/AnimRes这样的问题发生


2.继续通过 exclude module 去除 annotation 的重复引用就可以了

处理的相关代码为:
compile (‘com.android.support:recyclerview-v7:21.0.3’){
exclude module: ‘support-v4’
exclude module: ‘support-annotations’
}

这是我处理冲突之后的结果,gradle dependencies 依赖包里面没有再使用到v4和annotations的引用

这里写图片描述

到此为止基本解决了 Multiple dex files define Landroid/support/annotation/AnimRes 这个问题,存在重复引用的问题;

3.gradle build 或者 代码里面build 之后包没有加到依赖里面解决办法:

手动更新:
这里写图片描述

4.问题总结

一般 finished with non-zero exit value xxx 的这种问题,idea 的编译器是不会报具体的错误,需要自己手动通过gradle 的命令来解决上面的问题。

1.先通过gradle clean 项目

2.然后 build 项目

此时你会发现 日志里面会出现具体的错误的问题,例如:xml 错误,图片错误,重复引用等等

3.查看项目的gradle 的依赖列表 ,检查jar 冲突的问题

4.通过 exclude mode 除去重复的包,然后重复上述步骤

当然我这也是一种情况,也有可能需要配置gradle 的相关配置,根据提示配置就好了:

例如:
packagingOptions {
exclude ‘META-INF/DEPENDENCIES’
exclude ‘META-INF/LICENSE’
exclude ‘META-INF/LICENSE.txt’
exclude ‘META-INF/license.txt’
exclude ‘META-INF/NOTICE’
exclude ‘META-INF/NOTICE.txt’
exclude ‘META-INF/notice.txt’
exclude ‘META-INF/ASL2.0’
}

所有学会使用gradle很有用处,注意版本等问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值