之前通过android studio生成一个项目之后,在app的gradle中会自动帮你加上这样一句:
compile fileTree(dir: 'libs', include: ['*.jar'])
这是指明项目的jar文件所在的文件夹为libs文件夹。
后来对android studio做了一次升级。新建项目之后遇到了这样一个问题。项目除了app之外还有多个module。因为之前app是可以直接使用其依赖的module中的jar包的。结果现在代码调用不到了。如果在app中再放一个jar包又提示你jar包冲突。
经过查看发现,新生成项目的gradle中,原本上面的这句变成如下这句:
implementation fileTree(dir: 'libs', include: ['*.jar'])
经查看,是在gradle 3.x之后默认使用implementation,而compile已经过时了。也是由于这个原因导致app依赖module中的jar包失败。
解决方法:
gradle 3.x中提供了一个新的依赖命令api。因为implementation只会作用于当前module。因此就导致了app依赖module的jar失败的问题。将implementation替换成api即可依赖成功。
api fileTree(dir: 'libs', include: ['*.jar'])顺便说一句,被废弃的compile与api是等同的,两者在功能上没有区别。只是gradle 3.x的优先级是先使用implementation。