Gradle中implementation和api的区别
Posted BennuCTech
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle中implementation和api的区别相关的知识,希望对你有一定的参考价值。
api关键字与旧的compile关键字完全相同。因此,如果用api替换了所有的compile,是完全ok的。
区别:
api或compile关键字引用的包对于其他module来说是可见的
而implementation关键字引用的包对于其他module来说是不可见的
简单解释一下,有三个moudle:A、B、C
A依赖B,B依赖C
如果B依赖C是api形式,那么A是可以访问C的代码,即C对A是可见的
但是如果B依赖C是implementation形式,那么A不可以访问C的代码,即C对A不可见
为什么要这样区分?
一个是更好的解耦,将A和C完全解耦
另外一个是加快编译速度(其实也是解耦的作用),如果C对A可见,当C有变化,A和B都需要重新编译;而如果C对A不可见,当C变化了,只有B重新编辑即可。
以上是关于Gradle中implementation和api的区别的主要内容,如果未能解决你的问题,请参考以下文章
gradle implementation runtimeOnly 和api 区别
为啥 Gradle 4.4/Java 插件中没有“api”方法,而 “implementation” 是可用的?
Java使用 Gradle 依赖配置compile,implementation和api的区别
Gradle中的api,implementation,kapt annotationProcessor的使用
Android Gradle 插件Gradle 依赖管理 ④ ( Android Gradle 插件中注册的依赖分组 | implementation | api | compileOnly )