gradle使用高版本出现包重复,具体原因合解决办法如下:
compile fileTree(dir: 'libs', include: '*.jar', exclude : ['***.jar', 'android-support-v4.jar’])———去重包(会一直报错,跟着错误就知道哪个包是重复的了) compile project(':submodules:子模块名称)———这里括号中的为被依赖的子模块
包依赖关系的6中不同方式(简单了解): http://www.cnblogs.com/kangyi/p/4449857.html
1原因:
项目中依赖很多子模块,子模块是都是另一个团队,甚至是另个部门的团队来维护,他们会有自己的包依赖关系(因为子模块也会供给很多团队使用,所以不能随便删包),这样当主线中引用很多其他子模块的时候就出现了复杂的依赖(子模块之间也会有依赖),当gradle在1.3的时候,在编译的时候会merge重复的代码(类似去重),但是当使用高版本的时候会出现包重复的问题,编译不通过。
2:解决办法:
一般dependencies 都会有这样一句代码:compile fileTree(dir: 'libs', include: '*.jar')——这句话是说我要仓库中所有的代码,这个时候需要去重子模块的重复的包 compile fileTree(dir: 'libs', include: '*.jar', exclude : '***.jar')———exclude的意思就是去除,如果有多个包则[.jar,.jar]类似数组,逗号分割,但是这样会导致子模块编译不通过,这个时候就要 provided files('libs/***.jar’)——参与编译,但是不打到最终的jar,这样就达到的去重(子模块可以编译,主线可以打包)
3:关于子模块之间的依赖去重compile fileTree(dir: 'libs', include: '*.jar', exclude : ['***.jar', 'android-support-v4.jar’])———去重包(会一直报错,跟着错误就知道哪个包是重复的了) compile project(':submodules:子模块名称)———这里括号中的为被依赖的子模块
包依赖关系的6中不同方式(简单了解): http://www.cnblogs.com/kangyi/p/4449857.html