使用Android Studio 打开别人的项目或者很久以前的项目经常会遇到依赖异常的问题:
1 无法下载某某jar包,aar等
2 明明以前编译过的程序,突然编译不过了,然后报一堆依赖问题

今天因为要打包一个过去很久的程序包,但是当我打开项目之后,一顿常规操作,build->assemble 几秒钟后,界面上就弹出了异常日志,各种依赖包无法下载。

这种情况以前也遇到过,尝试了几次以前的解决办法,什么clean工程,更新代理,注释代理,使用离线模式,重新同步项目…最终都以失败告终。

看着日志栏一大片红红的依赖错误提示,都是说项目依赖的资源无法下载,这里我就有几个疑问。
1 这些资源之前编译的时候应该是下载过的,为什么重新编译需要重新下载?
2 这些依赖包下载下来最终放在了哪里?
3 为什么有的jar包不用下载?

然后就去各种查找资料(百度)最终将结果记录下来:
首先说3的问题,为什么有的jar包不用下载?因为IDE会将项目依赖的包都下载到一个缓存中,如果下次项目中有用到相同的包,就不会再去仓库下载了,也就是说,那些依赖了的不用下载的包是之前项目中已经下好了的。

问题2 ,这些包下载来最终放在了哪里?
如果没有修改过,则放在了一个gralde默认缓存文件夹下,我自己的缓存目录是:C:\Users\lenovo.gradle\caches 具体查找的方法可以在AS的project 视图下右键相关jar包进入,如下图:

Android studio之依赖异常

问题1 :暂时没有找到原因,不过百度过后猜测可能是因为,gradle有一个更新的机制,也就是说很久没有使用过的依赖从新使用的时候,gradle会取仓库比对一下是否有更新,如果有则从新下载。当然如果依赖的时候如果明确表示使用最新的版本,那是必然会去仓库更新最新的依赖包的。

解决了以上问题,回过头来再看下载不了jar包的问题大概一下几个原因:
1 网络不稳定
2 被墙了
3 访问的仓库地址可能不对,导致下载失败,看看项目gradle脚本中是否手动更改过仓库地址。

网络不稳定的解决办法:多试几次同步项目,如果还是不行,使用手机热点在同步试试。
尝试上面的方法后如果还是不行,可以尝试使用翻墙的方式再同步。
上面两种方法试过几次都不行,看看日志栏中的提示有没有更明显的说明,如果遇到说在某某地址无法下载某某jar包的情况,你就复制那个地址,在浏览器中看看能否下载。如果能,说明IDE可能出现了问题,如果也不能,再来分析为什么不能,是不是下载的地址错了?比如说将http改为https试试?等等等等…

相关文章: