Android Studio的Gradle添加重复依赖的问题

Multiple dex files define Lcom/nineoldandroids/animation/Animator$AnimatorListener; 在Android Studio里build项目时不会报错,但是run项目的时候就会报上面的那个错误。这个问题纠结了我整整一天啊,虽然最终的确是解决了,然而到现在我还是没能完全弄懂原理。记录一下我解决这个问题的过程。

首先,遇到这个问题的时候,意料之外,情理之中。因为在用eclipse写Android的时候,也遇到过同样的问题,我知道是重复引用包的问题。当时将自己开发的项目里libs文件夹重复的jar包删掉就行,会自动引用library项目里的jar包。顺着这个思路,我将gradle文件里的compile ‘com.nineoldandroids.library:2.4.0’注释掉,然而并没有什么用。

然后,我思考了一下,觉得应该是其他依赖里也引用了nineoldandroids,可是这我就没办法了呀,这是通过gradle自动下载配置的呀。然后我就百度(再再再次强调,搜这种技术上的问题时,千千万万记得用Google,这次就又栽坑里了)了一下,大部分都是些重复的资料,或者是没人回复的求助信息。说来也惭愧,自己也没能帮助做些什么,希望篇博文能帮助到大家。

最后我去加入的几个Android学习交流群去提问。有人提示我说他也遇到过这个问题,他是将依赖的项目下载下来,作为module来引入到自己的项目里。我也将引用了nineoldandroids的那个项目下载下来这样去做,可是还是报错。实在是没办法了,采用终极办法,就是将依赖的那个项目源码和res文件直接copy到自己的项目里。好了,世界终于清静了,可是这种曲线救国的行为实在是很差的一种解决方式。不仅扰乱了自己的项目结构,也是治标不治本,假如下次又遇到这种问题,不是又得把源码粘贴复制过来?

第二天,接着写项目,实在是忍不了那杂乱的包,一定要解决这个问题才肯罢休!这次我翻过了那道墙,用了google来搜索这个问题。终于让我找到了解决方式。

compile('com.mxn.soul:flowingdrawer-core:1.2.0')
compile('com.rengwuxian.materialedittext:library:2.1.4') {
        exclude group: 'com.nineoldandroids'
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

flowingdrawer-core这个依赖里的libs文件夹下有nineoldandroids2.4.0.jar这个jar包。 
materialedittext这个依赖里的gradle里compile ‘com.nineoldandroids.library:2.4.0’ 
所以会导致重复引用了jar包。在materialedittext的依赖里添加语句 exclude group: ‘com.nineoldandroids’,意思是编译的时候将group为com.nineoldandroids的所有library都去除在外,这样materialedittext就会自动去引用flowingdrawer-core项目里的nineoldandroids2.4.0.jar包了。到此问题解决了。

不过,我又进行了其他的尝试,我改成如下配置

compile('com.mxn.soul:flowingdrawer-core:1.2.0'){
       exclude group: 'com.nineoldandroids'
}
compile('com.rengwuxian.materialedittext:library:2.1.4') 
 
 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

这样还是会出问题。想了想,应该是exclude语句只能在编译时将gradle文件里的依赖去除掉,而不能去掉libs文件里的jar包引用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值