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

当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指令
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说明 本文主要介绍和Gradle关系密切、相对不容易理解的配置,偏重概念介绍。部分内容是Android特有的(例如...
    jzj1993阅读 15,794评论 1 62
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,735评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,147评论 19 139
  • 请允许我借鉴前辈们的东西~~~~ 感激不尽~~~~~ 以下为Android 框架排行榜 么么哒~ Android...
    嗯_新阅读 2,209评论 3 32
  • 内容创作 李惠 李惠完成了30天打卡的制作 夏韩写了3行情书活动的推送 线下平推 陈珍 提升发帖质量引起更多人参...
    灌县十三妹阅读 304评论 0 0