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. 刚开始是这样引用 ...
随机推荐
- ASP.NET Core部署系列一:发布到IIS上
前言: 当构建一个ASP.NET Core应用程序并且计划将其运行在IIS中时,你会发现Core应用程序和之前版本的ASP.NET程序在IIS中的运行方式是完全不一样的.与ASP.NET时代不同,AS ...
- javaWeb技术第一篇之HTML
<!-- 当前是最简的html --> <html> <!-- 告诉浏览器当前是一个html文档 最外面的标签. --> <head> <!--h ...
- Add an Item to the Navigation Control 将项目添加到导航控件
In this lesson, you will learn how to add an item to the navigation control. For this purpose, the N ...
- Linux-打包压缩命令
内容总结自<鸟哥的Linux私房菜>http://cn.linux.vbird.org/linux_basic/0240tarcompress.php 一.打包/压缩文件常见扩展名 *.g ...
- 电池的QPNP模式
名词解释: CV:Constant Voltage恒压 SMMB charger:Switch-ModeBattery Charger and Boost peripheral开关模式电池充电器和升压 ...
- MVC(基础一)
MVC学习之前必须掌握的c#基础知识 一.类自动属性 public class Person { //自动属性 public string Name { get; set; } private int ...
- 手动更新了packages.config Nuget配置文件,自动引用dll
通过Google查询到:http://stackoverflow.com/questions/6876732/how-do-i-get-nuget-to-install-update-all-the- ...
- 在windows环境下部署nuxt项目(线上发布部署)
因为公司项目需要兼容SEO,同时我们也一直希望能够真正的实现前后端分离,于是毫不犹豫的选择了nuxt. 话说要重构前后端分离真是一个大工程,由于各种原因我们团队花了近两年时间都没有完成,最近才又重启把 ...
- vscode源码分析【八】加载第一个画面
第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析[三]程序的启动逻辑,性能问题的追踪 ...
- Global AI Bootcamp 2019 宁波站活动总结
2019年12月14日,由微软MVP技术社区发起的Global AI Bootcamp 2019盛会在全球60多个国家130个城市点燃.在大中华区,本次活动由全国众多Azure专家及微软MVP技术社区 ...