Gradle依赖本地缓存的那些事

/ 0评 / 2

前言

如果我们将模块放在远程仓库比如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

https://pkaq.gitbooks.io/gradletraining/content/book/ch5/4.%E4%BE%9D%E8%B5%96%E7%9A%84%E6%9B%B4%E6%96%B0%E4%B8%8E%E7%BC%93%E5%AD%98.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注