前言
如果我们将模块放在远程仓库比如maven的时候,在Android Studio中使用Gradle依赖是非常方便的,比如 implementation 'com.liulishuo.okdownload:okdownload:1.0.5' 这样我们就将okdown1.0.5添加到自己的项目中,但是我们在官方还可以看到implementation 'com.liulishuo.okdownload:okdownload:1.0.6-SNAPSHOT'的版本,对于这个就是快照版本。
仓库分类
正式版本: 后面直接是版本号,比如: implementation 'com.liulishuo.okdownload:okdownload:1.0.5'
快照版本:版本号后面有"-SNAPSHOT",比如: implementation 'com.liulishuo.okdownload:okdownload:1.0.6-SNAPSHOT'
动态版本:没有具体指明版本号,比如:compile 'com.hyphenate:hyphenate-sdk:3.+' 或者 compile 'com.hyphenate:hyphenate-sdk:latest.release'(最新的release版本) 或者 latest.integration 最新的版本,不管是release还是其他版本
快照版本的使用
当我们合作开发的时候,如果自己的某一个模块在一直改动,那么其他人就可以使用快照版本,保证其他人每次运行的时候都是使用的自己最新的版本,这样就不需要每一次自己的修改都通知其他人去更新版本号了,当版本稳定,不再修改的时候,我们就可以发布正式版本。
缓存问题
今天在抽取基础UI组件的时候,发现修改的bug不能同步到开发环境,Google以后发现,原来Gradle对于快照版本的缓存时间是24小时(未验证),所以当我们第一次引用以后,再次的发布就不会继续同步到本地了
解决方案
在/app/build.gradle的做如下修改(时间可以自己定义)
android { ... configurations.all { resolutionStrategy.cacheDynamicVersionsFor 10, 'minutes' // 动态版本 10 min resolutionStrategy.cacheChangingModulesFor 0, 'seconds' // 快照版本 0 s }
添加了上面的配置即可每一次都优先比对服务器上面的快照版本,如果发现更新就使用最新版本,如果没有更新,则使用本地缓存的版本。
参考链接
https://blog.csdn.net/maosidiaoxian/article/details/79480148