在安卓moudle相互依赖时,两种方式是有区别的. 区别如下:
- implementation可以让module在编译时隐藏自己使用的依赖,但是在运行时这个依赖对所有模块是可见的。而api与compile一样,无法隐藏自己使用的依赖。
- app依赖模块mylibrary1、mylibrary1依赖模块mylibrary3,当使用api方式时app可以调用mylibrary3中的类,当使用implementation时则不可以.
- 编译速度
如下所示依赖,假如mylibrary4发生改变时如果用implementation则只需要重新编译mylibrary4和mylibrary3,如果用api则需要全部重新编译一遍,及其耗时.
- 当所有的库都上传到maven仓库时 implementation 依赖的库里的依赖也能被app所引用到.而未上传到库中则不可以.
比如app依赖lib1,lib1依赖lib2,采用maven仓库的形式用implementation相互引用,则app可以使用lib2中定义的类或方法
app依赖lib1,lib1依赖lib2,采用本地module的方式用implementation相互引用,则app不可以使用lib2中定义的类或方法