同一个Android工程中,多个Module依赖同一个Jar包,导致包冲突,解决如下:
主项目不做改变,子Module需要用到主项目里的包时,子Module做以下改动:
- 注:使用Provided必须删除compile fileTree(include: ['*.jar'], dir: 'libs') 不然lib下的jar均按照compile方式引入到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。