美文网首页androidAndroid知识Android开发
AndroidStudio中多个Module依赖同一个jar的

AndroidStudio中多个Module依赖同一个jar的

作者: 一只好奇的茂 | 来源:发表于2017-05-17 17:24 被阅读213次

最近在帮师兄做一个项目时,遇到一个问题:同一个Android工程中,多个Module依赖同一个Jar包,导致包冲突,解决如下:

解决步骤
  1. 将任意一个Module中的jar依赖更改为compile files('your jar name'),其他需要依赖的地方改为provided files('your jar name')
  2. 删除所有gradle中的compile fileTree(include: ['*.jar'], dir: 'libs)
具体案例解决说明
  • 案例:一个AndroidStudio工程中,存在app module以及环信Module,且两者都依赖定位sdk,现出现依赖问题。
  • 解决步骤:
  1. 在app module的gradle中以compile方式引入:
compile files('libs/AMap_Location_V2.4.1_20160414.jar')
  1. 在环信 Module的gradle中以provided方式引入:provided files('libs/AMap_Location_V2.4.1_20160414.jar')
  2. 在app module及环信module的gradle中去掉
compile fileTree(include: ['*.jar'], dir: 'libs')
原理讲解
  • 多个Module依赖同一个jar时,直接把jar加入到对应需要的Module会导致编译报类冲突。
  • AndroidStudio中的依赖的几种方式:
  1. compile
    compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。
  2. Provided
    Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。
  3. APK
    只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错
  4. Test compile
    Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。
  5. Debug compile
    Debug compile 仅仅针对debug模式的编译和最终的debug apk打包
  6. Release compile
    Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。
    我们需要用的是Provided,这样在写代码的时候可以在Module中正常使用jar中的类,但是要有一个Module以compile的方式依赖这个jar,这样编译的时候只有一个jar编译进apk。

相关文章

网友评论

本文标题: AndroidStudio中多个Module依赖同一个jar的

本文链接:https://www.haomeiwen.com/subject/olndxxtx.html