二、Android Studio2.x依赖说明
PS:括号内为对应3.X版本的依赖
三、3.x新依赖引入的原因
Android Studio3.X引入新的依赖方式的原因:
首先,假设这样一种情况:
一个App工程往往是由许多互相依赖的module所组成,对于处于最底层、最基础的module有两种可能的变化:
Implementation change:内部代码变更,但是模块的外部接口不变。
Application binary interface(ABI) change:外部接口修改。
四、Implementation、api与compile的关系与区别
Implementation:使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将依赖隐藏在内部,不对外部公开。
三者的关系:compile和api对应,效果相同;implementation的区别在于对外可见性,而且可以加快编译速度(原理在于减少不必要的重复编译过程)。
五、关于compileOnly与annotationProcessor的注意点
在使用依赖中,还有一个依赖方式annotationProcessor,该依赖与compileOnly类似,都是只编译并不打包入apk。
区别:
annotationProcessor的作用是编译时生成代码,编译完就不需要该依赖。
compileOnly作用于用重复的库的情况,目的为避免库的重复冲突,最终在apk打包中实现包含的该依赖不重复,即该依赖是需要的。
参考资料:理解Android新的依赖方式
Android依赖导入全攻略
Android Studio 3.0中dependencies依赖由compile变为implementation的区别
Android gradle provided、implementation等指令注意点