Android多module下重复jar包问题
版权声明:本文为xing_star原创文章,转载请注明出处!
本文同步自
android多module下重复jar包问题
android开发中,多module下重复jar包问题碰到的次数还是挺多的。解决的方式有很多,这里一一汇总下。
先举个例子,目前我们的app架构中,采用的是多module架构,有点类似于组件化架构的方式,其中一个module是阿里百川的,另外一个module是网易云信。这两个包都存在fastjson,都是通过把jar包拷贝到libs目录下的方式引用的,这两个jar包版本也不一致,所以,编译的时候就提示错误了。问题产生的原因我们知道了,那么如何解决。第一种方式,将两个module的jar都删掉,然后都使用gradle远程依赖一个特定版本的方式。第二种方式,新建立一个common的module,存放这种jar包,保留合适的jar,然后阿里百川和云信moudle都依赖这个common module。
以上介绍了其中的两种方案,我更倾向于第一种,改起来容易些。
接着我们再介绍下,另外一种方式,在一次需求中,发现有两个module都引入了高德地图sdk,版本也不一致,编译之后,报错了。如何解决呢,这块没有使用远程依赖的方式,主要是没有找到远程依赖的使用方式。所以这里呢,两个module的jar经过比较,保留了一个较高的版本,然后这两个module都使用相同的jar,这样的话,直接编译肯定还是会报错的,还需要对其中的一个module做处理(另一个module不用处理)。
可以看一下处理的代码
// api filetree(dir: 'libs', include: '*.jar') provided files('libs/amap2dmap_3.0.0_amapsearch_3.6.1_amaplocation_3.2.1_20161228.jar')
这两行代码都需要,第一行是去掉gradle自动扫描libs目录下的jar,第二行是以provided的方式参与编译,这样就可以解决问题了。
最后在汇总下,本文一共讲了三种处理多module下重复jar包问题的解决办法。第一个是使用远程依赖,第二个是建立一个common moudle,用来存到jar包,其他module来引用它,第三种是使用provided的方式。希望对大家有用。