Compile,Provided,APK,Test compile,Debug compile,Release compile

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打包。

转自:http://www.cnblogs.com/kangyi/p/4449857.html

  [AndroidStudio中多个Module依赖同一个jar的解决方案](http://blog.csdn.net/u013134391/article/details/51538511)





  **方案****:** 将任意一个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 仅仅是针对单元[测试](http://lib.csdn.net/base/softwaretest)代码的编译编译以及最终打包测试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
  

  
  

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

  
  

    转自:http://blog.csdn.net/u013134391/article/details/51538511