Android多module下重复jar包问题
版权声明:本文为xing_star原创文章,转载请注明出处!
本文同步自http://javaexception.com/archives/166
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的方式。希望对大家有用。
Android多module下重复jar包问题的更多相关文章
- Android Studio下导出jar包和aar包
Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...
- Android studio 将 Module 打包成 Jar 包
整理记录 AndroidStudio 把一个 module 项目打包成 jar 包. 一.默认自动生成的 jar 包 众所周知 android studio 会在library所依赖的 app运行 或 ...
- android studio 使用gradle 导出jar包,并打包assets目录
警告:本文年久失修. 随着android studio的升级 ,gradle的升级,严格按照本文的代码去做可能不会成功,希望依然可以作为解决问题的思路. 最近项目在做一个sdk,供别的开发者使用,所以 ...
- [转]--android studio 使用gradle 导出jar包,并打包assets目录
转自: http://www.cnblogs.com/wuya/p/android-studio-gradle-export-jar-assets.html 最近项目在做一个sdk,供别的开发者使 ...
- Android framework编译出来的jar包classes.jar的位置
在源码环境下编译 Android framework编译出来的jar包classes.jar的位置 out/target/common/obj/JAVA_LIBRARIES/framework_in ...
- 如何为libs目录下的jar包关联源代码
以前,我们可以为lib目录下的jar包关联源代码,但是现在似乎不行了. 下面是一篇讲述此问题解决方法的文章: How to attach javadoc or sources to jars in l ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...
- 《android 导入第三方源码jar包遇到的坑》
最近想做个app,里面需要有一个二维码扫描的功能,然后谷歌之后发现Zxing这个用的人好多,就看看怎么用: 然后就在github上拉下他们的源码,导入eclipse,然后编译之后导出为jar文件[用的 ...
- android中正确导入第三方jar包
android中正确导入第三方jar包 andriod中如果引入jar包的方式不对就会出现一些奇怪的错误. 工作的时候恰好有一个jar包需要调用,结果用了很长时间才解决出现的bug. 刚开始是这样引用 ...
随机推荐
- 使用Navicat Premium 比较PostgreSql数据库 dev环境与test环境差异
Navicat Premium 功能很强大,支持不同数据库客户端的连接,并且使用工具可以生成两个库差异的sql脚本,方便dev与test环境表结构同步,具体操作方法如下 单击运行,实现两个库中模式表结 ...
- SAP记账期间变式
记帐期间变式能够控制每个公司代码中打开的记账期间,包括正常记账期间和特别记账期间.可以为企业组织架构中的每个公司代码定义一个归其单独使用的记账期间变式. 记账期间变式独立于会计年度变 ...
- postman---postman生成测试报告
做完测试后,都会编写一份测试报告,测试报告中最主要的就是呈现出测试结果,哪些用例通过了,哪些用例没有通过.像postman这么强大的功能也可以自动生成报告,供我们测试同学进行查看,显得更加有B格~~~ ...
- 昨天周末晚上没有出去,码了一小段,先留着kangkang。
昨天周末晚上没有出去,码了一小段,先留着kangkang. import numpy as npimport matplotlibmatplotlib.use('Agg')import matplot ...
- go语言设计模式之Concurrency future
future.go package future type SuccessFunc func(string) type FailFunc func(error) type ExecuteStringF ...
- 原生JS无缝轮播图
(1)原理介绍 (2)静态布局 <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...
- Noip2018Day1T3 赛道修建
题目链接 problem 给出一棵有边权的树.一条链的权值定义为该链所经过的边的边权值和.需要选出\(m\)条链,求\(m\)条链中权值最小的链的权值最大是多少. solution 首先显然二分. 然 ...
- 【转】SQL中GROUP BY语句与HAVING语句的使用
一.GROUP BY GROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个列 ...
- Codeforces Round #603 (Div. 2) A. Sweet Problem 水题
A. Sweet Problem the first pile contains only red candies and there are r candies in it, the second ...
- Golang 入门 : channel(通道)
笔者在<Golang 入门 : 竞争条件>一文中介绍了 Golang 并发编程中需要面对的竞争条件.本文我们就介绍如何使用 Golang 提供的 channel(通道) 消除竞争条件. C ...