在项目中有两个Android Library分别为latte-ec和latte-core,使用example依赖latte-ec,然后latte-ec又依赖latte-core,但是在example里面调用不到latte-core里面的类Latte,如下图所示:
解决方案:这个主要是Android Studio 3.0版本的问题,在3.0版本中,compile指令被标注为过时方法,而新增了两个依赖指令,一个是implementation 和 api,这两个都可以进行依赖添加,但是有区别:
api指令完全等同于compile指令,没区别,你将所有的compile改为api,完全没有错。
implementation指令简单来说,就是使用了该命令编译的依赖,只会是自身有依赖,而不对外部公开,也就是说,如果latte-ec依赖latte-core使用的是implementation指令,那么example依赖latte-ec时,不可以调用到latte-core里面的资源,只有latte-ec可以。如果example依赖latte-ec时想要调用到latte-core里面的类,就需要latte-ec依赖latte-core时使用api指令。