版权声明:本文为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包问题的更多相关文章

  1. Android Studio下导出jar包和aar包

    Android Studio下导出jar包和aar包 jar包和aar包的区别 步骤 1. 创建Android工程 创建工程比较简单,不错复述 2. 创建一个Library(Module) 创建了一个 ...

  2. Android studio 将 Module 打包成 Jar 包

    整理记录 AndroidStudio 把一个 module 项目打包成 jar 包. 一.默认自动生成的 jar 包 众所周知 android studio 会在library所依赖的 app运行 或 ...

  3. android studio 使用gradle 导出jar包,并打包assets目录

    警告:本文年久失修. 随着android studio的升级 ,gradle的升级,严格按照本文的代码去做可能不会成功,希望依然可以作为解决问题的思路. 最近项目在做一个sdk,供别的开发者使用,所以 ...

  4. [转]--android studio 使用gradle 导出jar包,并打包assets目录

    转自: http://www.cnblogs.com/wuya/p/android-studio-gradle-export-jar-assets.html   最近项目在做一个sdk,供别的开发者使 ...

  5. Android framework编译出来的jar包classes.jar的位置

    在源码环境下编译 Android framework编译出来的jar包classes.jar的位置  out/target/common/obj/JAVA_LIBRARIES/framework_in ...

  6. 如何为libs目录下的jar包关联源代码

    以前,我们可以为lib目录下的jar包关联源代码,但是现在似乎不行了. 下面是一篇讲述此问题解决方法的文章: How to attach javadoc or sources to jars in l ...

  7. 关于如何正确地在android项目中添加第三方jar包

    在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...

  8. 《android 导入第三方源码jar包遇到的坑》

    最近想做个app,里面需要有一个二维码扫描的功能,然后谷歌之后发现Zxing这个用的人好多,就看看怎么用: 然后就在github上拉下他们的源码,导入eclipse,然后编译之后导出为jar文件[用的 ...

  9. android中正确导入第三方jar包

    android中正确导入第三方jar包 andriod中如果引入jar包的方式不对就会出现一些奇怪的错误. 工作的时候恰好有一个jar包需要调用,结果用了很长时间才解决出现的bug. 刚开始是这样引用 ...

随机推荐

  1. ASP.NET是什么?

    ASP.NET简介 简单来说,ASP.NET 是一个使用 HTML.CSS.JavaScript 和服务器脚本创建网页和网站的开发框架. 微软在2001年开发的第一个版本的ASP.NET,是一种建立在 ...

  2. 周会材料:高并发程序设计<二>

    第三章 JDK并发包https://www.cnblogs.com/sean-zeng/p/11957569.html JDK内部提供了大量实用的API和框架.本章主要介绍这些JDK内部功能,主要分为 ...

  3. 剑指offer笔记面试题10----斐波那契数列

    题目:求斐波那契数列的第n项.写一个函数,输入n,求斐波那契数列的第n项.斐波那契数列的定义如下:f(0) = 0, f(1) = 1,f(n) = f(n - 1) + f(n - 2). 测试用例 ...

  4. Typescript使用字符串联合类型代替枚举类型

    TypeScript宗旨 我觉得Typescript的宗旨是 任何一个 TypeScript 程序,在手动删去类型部分,将后缀改成 .js 后,都应能够正常运行.Typescript是javascri ...

  5. 百度地图API----搜索地址,获取该点的位置坐标并转换成WebMercator

    function doFind(){ LoadBaiduMapScript().then(BaiduMap).then(function () { //查询并获取坐标 var myGeo = new ...

  6. Android进阶之绘制-自定义View完全掌握(三)

    自定义View系列的第三篇博客,我们来学习如何实现自定义下拉框. 今天的程序,我们来实现这样的一个效果. 布局非常简单,我们直接开始编码. 修改activity_main.xml文件的代码. < ...

  7. redis5.0.4安装配置

    1.下载redis wget http://download.redis.io/releases/redis-5.0.4.tar.gz 2.解压到opt目录 tar -zxvf redis-5.0.4 ...

  8. (办公)mysql索引

    举个例子:20多w的数据,查询语句,什么都没有查到,既没有走到主键索引,普通索引,什么都没走,走的就非常慢. 下面要加索引,并了解mysql索引的作用,以及如何使用他们索引. 介绍MysqlMySQL ...

  9. 对于Python语音性能的一些个人见解

    虽然运行速度慢是 Python 与生俱来的特点,大多数时候我们用 Python 就意味着放弃对性能的追求.但是,就算是用纯 Python 完成同一个任务,老手写出来的代码可能会比菜鸟写的代码块几倍,甚 ...

  10. JUC-1-volatile

    什么是volatile关键字      volatile是轻量级同步机制,与synchronized相比,他的开销更小一些,同时安全性也有所降低,在一些特定的场景下使用它可以在完成并发目标的基础上有一 ...