终极清Android studio缓存
升级完Android studio 3.6之后,原有的项目中一直报错的一些依赖不存在问题,类似如下:
错误: 程序包com.bumptech.glide不存在
除了glide会报不存在,还遇到了greendao,butteknife等库也有这个问题。今天我会集中把这些问题说一下,我解决的思路。
在看我的解决思路之前,你需要先进行如下操作,如还是解决不了,你才看看我的解决思路。
- 1.执行build/clean操作
- 2.已经执行了file/invalidate cache/restart操作
- 3.删除项目的 .idea 和 .gradle 文件夹操作
这个三步走能够解决大部分因为缓存的问题导致的爆红或者程序包不存在的问题。
假如已经执行了上面的操作之后,仍然存在问题,你不妨按照我的思路来排查一下问题。
- 1.检查当前使用的库是否和gradle版本是否兼容
butterknife 就是这个问题,你可以到官方网站或github上看一下,若是有的话,肯定会给出兼容的解决方案。 - 2.若不是兼容性问题,需要检查一下,下载下来的对应的库包中对应的类是否在?
举个例子,错误: 程序包com.bumptech.glide不存在,按照上面三步,我操作了很多次,但是仍然不能解决问题。我抓狂,我无助。这时我在想,难道这个类glide真的不存在吗,所以我到项目下找external libraries。如下图:这里面下载了所有本项目依赖的库,已jar包的形式存在。
我的报错信息是错误: 程序包com.bumptech.glide不存在,我要看看是不是真的不存在,就需要找到对应的jar包。我依赖的版本为api ‘com.github.bumptech.glide:glide:3.7.0’,我就直接找到对应的库的jar,顺着项目中的依赖路径找。发现这个玩意glide是存在,为啥 Android studio 不能够识别不了呢(我认为是as的bug,程序员的职责就是fix bug)。
解决办法:
那是不是这玩意的缓存没有清理干净呢,你肯定说,你不是按照上面三个步骤操作了,缓存肯定清理了。
其实上面那个三部操作,清理都是.build 这一类缓存文件夹,我们所需要的把原始的jar也给清理了。
右击这个库,找到library properties
打开一个新的界面,若是里面有两个以上同样版本的记录的话,这里面就一个,因为已经解决问题了。当出现两个同样版本的记录时,说明本地也有两个同样的版本,这是Android studio 无法识别到底该使用哪个,就会出现不存在的问题。
这时候你需要把这个库所有jar都删掉,以防有漏网之余,我删除的是这个文件夹,最后我重启应用,完美解决不存在的问题。
总结:某个类不已存在,无非有两个原因,第一,本地下载的版本和依赖的版本不一致,第二,存在多个同样的版本,as不知道该选哪个(你看as多专注,猪居然不知道)。