
网上好多家有说:
1.compile 替换为 api
2.File -> Invalidate Caches -> Invalidate and Restart
可是在我这里依旧没用,对于解决办法1,是这么说明的
按照android stadio 3.1的要求,需要把gradle版本升级为 4.4及以上,但是gradle 4.4及以上要求将依赖api的compile换成implementation。而implementation声明的依赖没办法传递到module以外,即该module 以外module没办法引用到implementation声明的api。
如果是这个原因的话,我升级3.x已经有一段时间了,一直是用compile或implementation声明引用第三方库的,都没出现这样的 问题,当时就纳闷,就尝试了以下解决方案:
将compile 替换为 api即可,也就是如果有外部引用,则换成:api,剩下的换成:implementation,
在新建的项目中:

将所有的implementation改成api还是不行。
最后排查问题,是因为我用到了rxpermission,所以我使用了java1.8,所以

我只改了Source Compatibility,没有设置Target Compatibility,设置上后如下:

就解决了。
再做个总结,包括前两个:
1.compile 替换为 api
2.File -> Invalidate Caches -> Invalidate and Restart
3.设置java版本时,要Source Compatibility和Target Compatibility一起设置
网友评论