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和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 )