Android中gradle的依赖:implementation与api的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyi1009365545/article/details/81477299

当gradle插件升级到3.0.0及以上后,我们会发现在gradle中添加依赖的时候,会推荐你使用implementation或者api,而不再推荐你使用compile,今天就来简单介绍下这两者的使用与区别!让小伙伴们可以有目的的去选择implementation或者api

api

  • api的作用与compile相同,使用api添加依赖,会对外暴露其依赖的module的接口

下面举个小例子:
moduleA添加的依赖

api project('moduleB')

moduleB添加的依赖

api 'com.xxx.xxx:lib'

假如moduleB添加依赖lib,而moduleA添加moduleB作为依赖,则此时moduleA也可以使用lib中提供的接口

implementation

  • 使用implementation添加依赖,其所添加的依赖仅对当前所在的module提供接口,不会对外暴露接口

下面举个小例子:
moduleA添加的依赖

api project('moduleB')

moduleB添加的依赖

api 'com.xxx.xxx:lib'

假如moduleB添加依赖lib,而moduleA添加moduleB作为依赖,此时moduleA也不能使用lib中的提供的接口

特性

  • 提高项目的可读性
  • 隐藏不必要对外开放的接口
  • 加快编译速度

加快编译速度是什么鬼?

在大型项目中,会依赖多个lib且多层级依赖,如上面的小例子(app module依赖module BmoduleB依赖lib1lib2lib3…),此时使用api添加依赖,则app module也可以访问到lib1lib2lib3,当只需要改动一个lib1时,因为app module也可以访问到lib1,所以app module部分也会和module B一起被重新编译,而使用implementation则可以最大程度的避免这种情况。

另外,当不同的依赖module使用不同版本的lib(例如:不同版本的v7包),implementation可以最大程度的防止包冲突,并且在编译后会使用最高版本的lib

建议

  • compile在3.x版本的gradle中已被废弃,将在2018年底,被google移除,所以不要使用compile
  • 依赖首先应该设置为implementation,如果没有错误,那就用implementation ,如果有错,那么使用api指令

猜你喜欢

转载自blog.csdn.net/liyi1009365545/article/details/81477299