AndroidStudio中多个Module依赖同一个jar的解决方案

原创 2016年05月30日 15:59:13

方案: 将任意一个Module中的jar依赖为compile files('your jar name'),其他需要依赖的地方改为provided files('your jar name')并且删除compile fileTree(include: ['*.jar'], dir: 'libs)。即可  下面详细介绍为什么这样做以及案例


案例介绍


如 环信Module和自己app的Module都要用到定位sdk


1、在自己app的gradle中以compile引入如:

compile files('libs/AMap_Location_V2.4.1_20160414.jar')


2、在环信的Module的gradle中以provided的方式引入如:

provided files('libs/AMap_Location_V2.4.1_20160414.jar')


3、而且环信的gradle中不能存在compile fileTree(include: ['*.jar'], dir: 'libs')




==========================分割线=================================


AndroidStudio中Module相当于Eclispe中的Library,这里不做过多介绍

多个Module依赖同一个jar,直接把jar放入对应需要的Module会导致编译报类冲突

这里就要讲一讲AndroidStudio中的依赖的几种方式


compile

compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。


Provided

Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。


APK

只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错


Test compile 

Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。


Debug compile

Debug compile 仅仅针对debug模式的编译和最终的debug apk打


Release compile

Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。


我们需要用的是Provided,这样在写代码的时候可以在Module中正常使用jar中的类,但是要有一个Module以compile的方式依赖这个jar,这样编译的时候只有一个jar编译进apk。

注:使用Provided必须删除compile fileTree(include: ['*.jar'], dir: 'libs') 不然lib下的jar均按照compile方式引入到Module



搞定!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



版权声明:本文为博主原创文章,可以随意转载

Android Studio 里面的引用第三方库总结,以及compile、provided使用

Android Studio引用第三方库很方便,只需要一句代码就可以搞定,几种引用第三方库的方式,总结一下: 方式:1:它就会自动把这个包下载下来,并且引用它。节省git空间,而且修改版本也...

compile、provided、compile files、compile project四者的区别

在一个Android项目的build.gradle中,dependencies闭包中有以下四种形式的声明: compile 'com.android.support:appcompat-v7:22....

Eclipse中的add jars和add external jars有什么区别

转自:http://blog.csdn.net/haqer0825/article/details/8183264 add jars和add external jars有什么区别? ...
  • yasi_xi
  • yasi_xi
  • 2013年10月16日 09:16
  • 3350

Android lib与libs的区别和解决apk动态加载时异常

Android lib与libs的区别和解决apk动态加载时java.lang.IllegalAccessError: Class ref in pre-verified class resolved...
  • earbao
  • earbao
  • 2015年07月16日 12:22
  • 6228

Android Studio 重复jar包冲突问题

Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes 导入一个新项目,同时用到了v4,v7都...

Android Studio Jar包冲突解决方案

com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileExcep...

Android Studio 包冲突的解决方法

Android Studio下面有时候会出现包含多个相同类,即多个项目引用的相同的jar包,可以通过以下方法查找相同的jar包。**1、cache.xml中查看那个那个项目下的jar包不一样,即定位是...

Android studio jar冲突 文件冲突 aar引用相同的文件 引用相同的jar包 重复导入相同依赖包

开发项目,多多少少都会引进一些第三方jar或者aar资源文件,方便开发个性化功能,但这样就经常会出现包冲突、文件冲突、重复导入资源或者导入俩个不同的包中包含有相同的文件资源呢!后果导致编译失败,提示错...
  • WX_JIN
  • WX_JIN
  • 2016年03月11日 10:03
  • 12460

Android Studio 包冲突的解决方法

Android Studio 中包冲突,即多个项目引用的相同的jar包1、cache.xml中查看那个那个项目下的jar包不一样,即定位是哪个jar包引起的冲突。cache.xml文件的路径:2、如果...

android studio引入第三方jar包

android开发中,需要引入第三方的jar包,来高效的使用已有的现成的功能。下面在android studio中如何引入第三方jar包。 在菜单File中==》Project structure =...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AndroidStudio中多个Module依赖同一个jar的解决方案
举报原因:
原因补充:

(最多只允许输入30个字)