前言:
2019开篇哈哈,写这篇简单的总结之前先吐槽一下此时此刻的心情--无比的激动。一俩月没写简书了,对于一个喜欢总结的技术屌丝来说,学习不总结说不过去吧,哈哈。今天终于有时间在这总结一篇,好了不bb了撸起袖子开始搞起来。
背景
在我实习的时候就是维护一个电商类的app,而今天正好学习一个电商项目,由于对gradle语法不是很熟悉,自己搭建模块化架构的时候碰见了一个简单的问题。
碰见的问题
一看卧槽v7包不存在???怎么可能,赶紧查看我的项目,只是在项目中我依赖了latte-ec模块:
继续查看ec模块: 我的ec 模块依赖了core模块
在core模块发现了v7
这时我们会纳闷--老铁没毛病怎么报错呢?爱,不对。。。怎么以前是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语法是时候补补了哈哈,溜了溜了。。。。