• Android Sutdio依赖Snapshot版本,无法同步最新的包


    起因

    局域网中搭建了Nexus托管本地打包的aar,正常情况下,把修改完成的库推送到仓库后,其他项目引用Snapshot版本的依赖,同步后会马上下载最新的包,但是当第二次+推送后,就没有重新下载最新的包,导致代码一直飘红,但是build的时候,可以看到输出的日志中有Download http://xxx, took xx ms (xxx kB) ,就是刚上传的最新的包,结果编译成功。

    现象

    代码飘红,编译成功,多次清除缓存,重启均无效,重新上传aar也不行。

    尝试解决

    1. 执行Android Studio --File–invalidate caches… 全部勾上重启,结果没用
    2. Build–Clean Project ,没用
    3. 重新打包上传,没用
    4. 不依赖Snapshot版本,直接指定最新的版本号,同步报错:Cannot find a version of xxx' that satisfies the version constraints: Dependency path 'xxx:unspecified' --> 'xxx' Constraint path "xxx:unspecified' --> 'xxx:{strictly xxx-SNAPSHOT}' because of the following reason: debugRuntimeClasspath uses version xxx-SNAPSHOT 结果就是没能把最新的包弄下来,还是没用
    5. 关闭Android studio ,删除C:\Users\xxx\.gradle\caches 目录,重新打开项目,等待所有依赖下载完毕,恢复正常

    最终解决办法

    经过我一个个文件夹排除,最终找到如下依赖版本的更新受到如下目录影响:
    找到全局的gradle缓存目录一般是C:\Users\xxx\.gradle\caches\,我这里用的是gradle 7.6.1,所以准确来说,我们的目标文件夹是C:\Users\xxx\.gradle\caches\7.6.1\,然后我们会发现里面有个md-rule目录,然后执行如下操作:

    1. 我们把这个目录里面的所有文件删掉(md-rule.bin、md-rule.lock),如果文件被占用,可以先把Android Studio关闭;
    2. 打开Android Studio,把当前项目的缓存清理掉(Build--clean Project),再执行Sync 同步项目,就会把当前的依赖重新下载一遍,可以从Build输出窗口中看到下载的包已经是最新的了。
  • 相关阅读:
    leetCode 206. 反转链表
    Servlet介绍与配置
    linux的基本工具【yum和vim】
    [项目管理-20]:流水线pipeline与项目管理
    【学习笔记21】JavaScript数组的基本方法
    MySQL到底有没有解决幻读问题?这篇文章彻底给你解答
    SpringCloud入门简述
    【博客465】BGP(边界网关协议)-----BGP路由黑洞及路由反射器与联盟
    接口自动化用例设计总结
    java多线程-定时器Timer
  • 原文地址:https://blog.csdn.net/WPR13005655989/article/details/133670645