AndroidStudio中的依赖的几种方式以及JAR包重复的解决方案

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

JAR包重复的解决方案:

1、 使用provided把各个moudle的jar的范围控制在当前moudle.
2、让重复jar的两个moudle当中被引用的moudle含有jar,另一个不引用,然后全是compile方式
3、新建一个moudle专门装jar,所有需要引用jar的直接依赖这个moudle
4、把公用的jar放在项目文件夹下,引用的时候通过“/”回退目录,参考http://www.cnblogs.com/GISRSMAN/p/5140701.html 

 

有moduleA、B,A、B包含的so文件平台数不同,会报错。

 

1.将其中作为依赖的module jar改成provider形式, 这样jar就不会被编译进apk不会产生重复

jar只在当前module生效

2.直接去掉其中一个,依赖另一个即可

 

 

建议 将公共类新建一个common Moduel 统一管理

 

也可以将一些公共资源抽离出来 比如对话框等可以服用的资源文件 ,所有module指向一个common即可

减少module之前不必要的依赖网

 

 

当存在两个需要jniLibs的module时候,注意平台的一致性 ,避免因为平台不一致导致的 UnsatisfiedLinkError

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值