前两天碰到一个问题,一番查找之后发现是依赖方式的使用不当。在此,做一下几种方式的总结。
先说一下,在Android Studio 2.x 和 3.x 中依赖方式是有区别的
一、依赖方式
(Android Studio 2.x )
compile、provided、apk、Test compile 、Debug compile 、Release Compile
(Android Studio 3.x )
implementation、api、compileOnly、runtimeOnly、UnitTest implementation、Test implementation、
Debug implementation、Release implementation
二、区别
下面是2.x版本依赖的说明,括号里对应的是3.x版本的依赖方式
1、compile(implementation,api)
最常用的方式,使用该方式依赖的库将会参与编译和打包。
2.x用了compile的都可以用api替换。
implementation:依赖库私有,只会在当前module中生效,无法传递至上层
api:依赖库可传递,上层依赖了该module时,可以使用该module下api依赖的库
注:当我们依赖一些第三方的库时,可能会遇到com.android.support冲突的问题,原因是开发者使用的compile或api依赖的com.android.support包与我们本地所依赖的com.android.support包版本不一样,报错信息如下:
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes
解决办法可以看这篇博客:com.android.support冲突的解决办法
2、provided(compileOnly)
只编译,不参与打包。
3、apk(runtimeOnly)
不编译,只参与打包,很少用。
4、testCompile(testImplementation)
只在单元测试代码的编译以及最终打包测试apk时有效。
5、debugCompile(debugImplementation)
只参与debug模式的编译和最终的debug apk打包
6、releaseCompile(releaseImplementation)
只参与release模式的编译和最终的Release apk打包