api与implementation的区别

884 阅读1分钟

在安卓moudle相互依赖时,两种方式是有区别的. 区别如下:

  1. implementation可以让module在编译时隐藏自己使用的依赖,但是在运行时这个依赖对所有模块是可见的。而api与compile一样,无法隐藏自己使用的依赖。
  2. app依赖模块mylibrary1、mylibrary1依赖模块mylibrary3,当使用api方式时app可以调用mylibrary3中的类,当使用implementation时则不可以.
  3. 编译速度

如下所示依赖,假如mylibrary4发生改变时如果用implementation则只需要重新编译mylibrary4和mylibrary3,如果用api则需要全部重新编译一遍,及其耗时.

  1. 当所有的库都上传到maven仓库时 implementation 依赖的库里的依赖也能被app所引用到.而未上传到库中则不可以.
比如app依赖lib1,lib1依赖lib2,采用maven仓库的形式用implementation相互引用,则app可以使用lib2中定义的类或方法
	app依赖lib1,lib1依赖lib2,采用本地module的方式用implementation相互引用,则app不可以使用lib2中定义的类或方法

参见: www.jianshu.com/p/8962d6ba9…