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重新编辑即可。