implementation
对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,即将该依赖隐藏在内部,而不对外部公开(非传递依赖)
简单来说,从Android Studio 3.X开始,依赖首先应该设置为implement,如果没有错那就用implement,如果有错,那么使用api指令,这样会使编译速度有所增快。假设有A,B,C三个module,B,C依赖于A,那么在A中使用implementation依赖的库,在B,C中无法直接使用,在A中使
用implementation依赖的库更改时,只在A中重新编译,在B,C中不需要编译所以会加快编译速度
api
同2.x版本的compile,参与编译和打包,使用compile方式依赖的第三方库中所有的类,资源文件等都会被打包到项目的最终产物中(apk,jar,aar等)
compileOnly
同2.x版本的provided,编译占位,只参与编译的过程,不会打包到apk,适用于只在编译的时候起作用在运行期不需要使用的库,另外适用于当前工程需要引入一个主工程已经引入的库时
runtimeOnly
同2.x版本的apk,只在生成apk的时候参与打包,编译时不会参与
testImplementation
同2.x版本的testCompile,参与单元测试代码的编译以及最终打包测试apk
debugImplementation
同2.x版本的debugCompile,参与debug模式的编译和最终的debug apk打包
releaseImplementation
同2.x版本的releaseCompile,参与release模式的编译和最终的release apk打包
annotationProcessor
编译注解依赖,只参与编译过程,不会打包到apk,目的是在编译时动态生成代码。
作者:ywy_袁滚滚
链接:https://www.jianshu.com/p/b437558df369
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。