Gradle 使用阿里云仓库以及 'lastest.integration'或'+'问题

本文探讨了在Android Studio中使用Gradle进行依赖管理时,遇到的海外仓库访问慢及使用latest.integration和+符号导致的编译错误问题。介绍了如何通过配置阿里云仓库来加速依赖下载,并分析了错误产生的原因,提供了不使用动态版本标记的解决方案。

AndroidStudio使用Gradle进行依赖管理和下载,默认我们会使用三个maven中央仓库:

repositories {
	mavenCentral()
	google()
	jcenter()
}

这三个仓库都是海外服务器,国内如果想访问只能搭梯子,速度也不是很快。阿里云提供一个国内的云仓库,可以用来替代这些海外的仓库。

 repositories {
        maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
        mavenCentral()
		google()
		jcenter()
        }

如果要用到第三方的开源库,只需要添加具体的dependencies即可:

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'

有的时候我们希望每次使用最新版本的库,会这么干:

implementation 'com.android.support:appcompat-v7:lastest.integration'
implementation 'com.android.support.constraint:constraint-layout:+'

如果没有梯子,进行编译,会报错:
在这里插入图片描述
这就很奇怪了,都已经配置了阿里云的仓库,还是包这种错,肥啦吧唧坂田感觉没鸟用。如果删除:

	mavenCentral()
	google()
	jcenter()

仅保留阿里云的仓库,就能够编译通过。这里是不是有一万个?号,按照正常原理来说,阿里云仓库配置是放在这些国外仓库的前面,优先级是高于这些国外仓库的。而如果把lastest.integration和+改成具体的版本号,有可以编译通过,请求的就是阿里云的仓库。
总结:如果使用lastest.integration和+,系统就会走海外服务器,没有海外仓库,就走过来仓库。如果没有梯子就报错。
这是什么原因哩??
分析:其实 总结部分并不是精确,如果我们依赖一个仅阿里云有的,编译还是会报错。也就是说,只要存在lastest.integration和+,总是会请求到海外服务器。很有可能的原因是,为了找到最新的那个版本,gradle会去请求所有仓库,如果请求出现网络失败,则直接报错,也就是说哪怕某个依赖仅存在于某个仓库里面,gradle依然会遍历请求所有仓库,如果有或者没有,都不会出错,但是不能请求不了,也就是不能在网络请求阶段出错。
解决方案:不使用lastest.integration和+,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值