gradle 中implementation ,compile ,api的区别

前言:

2019开篇哈哈,写这篇简单的总结之前先吐槽一下此时此刻的心情--无比的激动。一俩月没写简书了,对于一个喜欢总结的技术屌丝来说,学习不总结说不过去吧,哈哈。今天终于有时间在这总结一篇,好了不bb了撸起袖子开始搞起来。

背景

在我实习的时候就是维护一个电商类的app,而今天正好学习一个电商项目,由于对gradle语法不是很熟悉,自己搭建模块化架构的时候碰见了一个简单的问题。

碰见的问题

image.png
一看卧槽v7包不存在???怎么可能,赶紧查看我的项目,只是在项目中我依赖了latte-ec模块:
Q``80$6VSQKDG[D[KT$IADI.jpg
继续查看ec模块: 我的ec 模块依赖了core模块
image.png
在core模块发现了v7
core
这时我们会纳闷--老铁没毛病怎么报错呢?爱,不对。。。怎么以前是compile 现在使用了 implementation这时发现问题了,于是码农大法哈哈找伟大的度娘。

发现区别

自从安卓studio更新到3.0以后 gradle也进行了更新3.xxx这时以前使用的compile ,apt等,被相应的取代了。 使用 api, implementation 代替了compile,使用annotationProcessor代替了apt。
  • compile 老版本使用,具有api的功能
  • implementation studio3.0以后使用。只能在内部使用,如上core图,v7包等使用implementation 只能在此core模块使用不能被其他模块使用。这样的好处是编译速度会加快,推荐使用implementation的方式去依赖,如果你需要提供给外部访问,那么就使用api依赖即可。
  • api 和compile类似,这种是我们最常用的方式,使用该方式依赖的库将会参与编译和打包。当我们依赖一些第三方的库时,可能会遇到com.android.support冲突的问题,就是因为开发者使用的compile依赖的com.android.support包,而他所依赖的包与我们本地所依赖的com.android.support包版本不一样,所以就会报All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes这个错误。
    还有一些类似的相关补充可以参考这位大大的:
    https://blog.csdn.net/daihuimaozideren/article/details/79585234?utm_source=blogxgwz5

总结

虽然本文简单还是忍不住写了些,看来我渣的gradle语法是时候补补了哈哈,溜了溜了。。。。

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

推荐阅读更多精彩内容