深踩 AndroidStudio 缓存的坑

本文讲述了作者在更新Android项目中图表库SNAPSHOT版本时遇到的Gradle缓存问题,导致Android Studio无法获取最新依赖。通过清除Gradle缓存、修改Gradle配置、清理Android Studio缓存等方法尝试解决,最终发现是.idea/libraries目录下的xml文件记录的旧缓存路径导致的错误。正确的解决方案是删除对应第三方库的xml文件或更新其内容为新的缓存路径。
摘要由CSDN通过智能技术生成

本文记录的是今天在群里提到的昨天所踩的一个坑,有关 AndroidStudio 缓存的。

先说一下背景。
我负责的一个项目,对一个图表库有外部依赖。这个图表库是我在维护的,由于新功能在开发中,所以我就使用了 SNAPSHOT 版本发布到 OJO(oss.jfrog.org) 上。我在项目中刚更新了依赖,忽然想到还少几个 API,于是发布了 SNAPSHOT 版本。
故事就这样开始了。

这时候回到 AndroidStudio 再去 Sync Project with Gradle Files 肯定是拉不下来的。众所周知,Gradle 的缓存策略中,对于 SNAPSHOT 版本默认的缓存周期是 24 小时,也就是从我上次更新之后,24小时内都会使用上次的缓存。

不周知的也没关系,我在这里补充说明一下,在 Gradle 用户指南的依赖管理一章中,有提到 Gradle 对于动态版本和变化模块的缓存时间默认是 24 小时。
何为动态版本?你见过的像 3.+ 这种就是动态版本,它会取检查到的最高的版本号。又比如 latest.integration,它也是动态版本。
而变化模块,就是像 0.2-SNAPSHOT 这种后面带 SNAPSHOT 的版本了。
这两者的区别就是,前者尽管你代码中的版本号写法不变,但实际上它仍然是去取仓库的最新版本。而后者它在仓库中的版本号还是一样,仍然是 xxx-SNAPSHOT,但实际上这个版本所对应的内容已经变了。

这里再多说几句,缓存周期也是可以修改的,在 Gradle 用户指南中同样有详细说明,就是添加如下配置:

configurations.all {
    resolutionStrategy.cacheDynamicVersionsFor 10, 'minutes' // 动态版本
    resolutionStrategy.cacheChangingModulesFor 10, 'minutes' // 变化模块
}

只是这里我一开始就贪省事,在更新依赖懒得去改。

既然如此,那怎么办?把 ~/.gradle/caches 整个给干掉?
不不不,那样太小题大做。其实这个问题我早已遭遇过

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值