android studio 缓存问题导致的库依赖不了
先感谢此作者 深踩 AndroidStudio 缓存的坑;
问题描述
前提是先前依赖的三方库,之前测试完全没得问题;
后面因为种种原因,在sync project时,某些类就直接爆红,找不到了,就跟没有导入的类效果一样;
问题解决
首先以为是仓库原因,进入mavencenter 仓库看了下肯定是有的嘛;
然后看看本地的仓库是否存在此包,进入到C:\Users\android\.gradle\caches
文件夹中,再进入到module-2/files-2.1
中,发现安装包是存在的 (惊讶脸!!) 那就是你androidstudio的问题了;
最后幸好看了那篇blog,不用踩后续的坑了,最后的解决办法为:
退出 Android Studio,删除所有的 .iml 文件以及 .idea 目录,打开 Android Studio 重新导入项目。
原因分析
原因可能就是本地仓库的transforms的序号跟project的.idea
xml文件的序号对不上导致本地有文件,但是没法引用某些内依赖包; 采用原作者的说法为:
原来是在 .idea/libraries 里会记录每一个第三方库的 classes, javadoc 以及 sources 所对应的路径。
其中 classes 对应的正是前面所提到的 transforms-1 里的目录,同样也正如前面所说,其中包含的路径是有 hash 值的,更新了依赖之后,hash 值不同,新的缓存路径也就不同了,
而这里还是用的原来被删的那个路径,找不到对应的文件当然编辑器里就提示 cannot resolve symbol 了。
所以正确而直接的解决方案应该是删除 .idea/libraries/ 里对应该第三方库的 xml 文件让它重新生成,或者是直接修改该 xml 文件的内容,改为更新依赖之后的路径。