如何在Bintray JCenter设置Android库的最新默认版本
+号依赖拉取旧版本的问题 我之前也碰到过一模一样的情况,这种问题大多是Gradle本地缓存或者JCenter版本索引同步延迟导致的,给你几个实用的排查和解决步骤:
清除Gradle本地缓存
Gradle会默认缓存已下载的依赖,哪怕远程版本更新了,本地还是会优先用缓存。你可以:- 在Android Studio里点击
File -> Invalidate Caches...,勾选Invalidate and Restart,重启后再同步项目。 - 或者用命令行强制执行刷新:
# Mac/Linux ./gradlew clean build --refresh-dependencies # Windows gradlew clean build --refresh-dependencies
- 在Android Studio里点击
确认JCenter的Latest Version设置
登录你的Bintray后台,找到对应的包,检查是否已经把Latest Version设置为0.0.2。有时候手动设置后,JCenter的索引同步需要10-30分钟甚至更久,别急着测试,等一会儿再试。强制指定版本验证
先在示例应用里直接写死版本号测试:compile 'com.userexperior:userexperior-android:0.0.2',如果能正常拉取,说明问题确实出在缓存或索引同步;如果不行,那可能是0.0.2版本的包没有正确上传到JCenter,得重新检查发布流程。检查Gradle依赖解析规则
看看示例应用的build.gradle里有没有配置版本强制规则,比如:configurations.all { resolutionStrategy { force 'com.userexperior:userexperior-android:0.0.1' } }如果有这种配置,会强制拉取旧版本,删掉它就行。
手动清理本地元数据文件
找到本地Maven仓库里的库路径(比如~/.m2/repository/com/userexperior/userexperior-android/),删除里面的maven-metadata.xml文件和0.0.1版本的文件夹,然后重新同步Gradle,这样就会重新从远程拉取最新的元数据和版本。
按照这些步骤排查下来,基本就能解决+号拉取旧版本的问题了。
内容的提问来源于stack exchange,提问作者zeeali

