Android studio版本3.0,该版本gradle编译速度有所加速,完全支持Java8。
Kotlin插件默认是安装的。
3.0弃用了compile方式改用:
api:跟 2.x 版本的 compile
完全相同
implementation:使用了该命令编译的依赖,它仅仅对当前的Module
提供接口。
什么意思呢
有一个libA被libB用implementation方式添加依赖,libB被appMoudle添加依赖。那么libA中的API只能被libB使用,appMoudle是拿不到libA的接口使用权的。
相当于军队中下级只服从自己上级,不会出现越级指挥的情况。
同时对于模块化时,依赖support版本不一致产生的冲突也有帮助
这么做有啥好处呢?
1、编译速度加快
上述你改了libA中的代码,按照以前的臭脾气,会把所有代码都编译一遍,差一点的电脑5-6分钟很平常
但是implementation关键字会在你更改libA中代码时不会再编译appMoudle这一层,只会到编译到libB这一层
想想,如果组件化项目比较大,这样会少编译多少代码。happy
2、隐藏对外暴露接口
使用implementation关键字的依赖,只服务与它的上级,代码耦合度又被降(复)低(杂)了。刺激