在gradle3.0版本中,compile 指令被标注为过时的方法,新增了两个依赖指令:implement 和api,这两个都可以进行依赖添加,它们有什么区别呢
最近在进行安卓模块化开发时遇到了这个问题:项目中有3个模块app
、libA
、libB
,它们之间的依赖关系是app
依赖libA
,libA
依赖libB
。这时要在app
模块中使用到libB
中的第三方库资源,在gradle3.0
之前,我们可以用compile
进行配置,这没有任何问题。但是在3.0版本之后,compile
指令被标注为过时方法,这时怎么配置才能让app
模块能使用libB
模块中的库呢?
在3.0版本中,compile
指令被标注为过时的方法,而是用新增的两个依赖指令:implement
和api
来代替它,这两个都可以进行依赖添加,我们先看看它们之间的区别,官方文档是这样说的:
api
它的作用与原来的compile
指令完全一样,当app api libA
时,在app
模块中可以直接使用libA
模块中的库资源
implement
使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开
总结
所以,在gradle
升级到3.0之后如果要解决开头的配置问题,只需要让app implement libA
,libA api libB
。如果libB
中有库需要暴露给其他模块使用,则需要使用implement
对相应的库进行配置