gradle包重名

来源:互联网 发布:linux下创建文件夹 编辑:程序博客网 时间:2024/04/29 12:58
gradle使用高版本出现包重复,具体原因合解决办法如下:

1原因:

   项目中依赖很多子模块,子模块是都是另一个团队,甚至是另个部门的团队来维护,他们会有自己的包依赖关系(因为子模块也会供给很多团队使用,所以不能随便删包),这样当主线中引用很多其他子模块的时候就出现了复杂的依赖(子模块之间也会有依赖),当gradle在1.3的时候,在编译的时候会merge重复的代码(类似去重),但是当使用高版本的时候会出现包重复的问题,编译不通过。

2:解决办法:

   一般dependencies 都会有这样一句代码:compile fileTree(dir: 'libs', include: '*.jar')——这句话是说我要仓库中所有的代码,这个时候需要去重子模块的重复的包    compile fileTree(dir: 'libs', include: '*.jar', exclude : 'baseLibrary-monolithic-[BaseLibrary-hw-1.2.0]-[394].original.jar')———exclude的意思就是去除,如果有多个包则[.jar,.jar]类似数组,逗号分割,但是这样会导致子模块编译不通过,这个时候就要    provided files('libs/baseLibrary-monolithic-[BaseLibrary-hw-1.2.0]-[394].original.jar’)——参与编译,但是不打到最终的jar,这样就达到的去重(子模块可以编译,主线可以打包)

3:关于子模块之间的依赖去重
    compile fileTree(dir: 'libs', include: '*.jar', exclude : ['baseLibrary-monolithic-[BaseLibrary-hw-1.2.0]-[394].original.jar', 'android-support-v4.jar’])———去重包(会一直报错,跟着错误就知道哪个包是重复的了)
    compile project(':submodules:DXToolboxLib’)———这里括号中的为被依赖的子模块

    
包依赖关系的6中不同方式(简单了解):http://www.cnblogs.com/kangyi/p/4449857.html
0 0