Gradle配置阿里云Maven镜像仓库地址

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZZY1078689276/article/details/80364726

为什么需要配置阿里云Maven镜像仓库地址

出现的问题

  在我们使用Gradle搭建安卓项目骨架时,经常会遇到appcompat-v7找不到依赖的情况,其报的异常故障码如下:

Failed to resolve: com.android.support:appcompat-v7:XXX

问题分析

  之所以会经常出现这种情况,其主要的原因在于Gradle默认使用的是Maven的中央仓库地址,Maven的中央仓库地址为:

https://mvnrepository.com

  通过在Maven中央仓库中搜索appcompat-v7依赖,我们找到的结果如下:

这里写图片描述

  我们可以看到,在Maven中央仓库中appcompat-v7依赖仅仅只存在两个版本,而最高版本为24.1.1,上传时间为2016年7月,换言之,安卓的appcompat-v7在Maven的中央仓库中在2016年7月便已经停止了更新,而这并不表示appcompat-v7就已经停止了更新,实际上在2016年7月之后,appcompat-v7依赖还在更新中,只是更新的仓库位置变了,由于谷歌公司自己也搭建了一套Maven中央仓库,而后续的appcompat-v7依赖的更新也主要是在该Maven仓库中进行。谷歌的Maven中央仓库地址如下:

https://maven.google.com

  由于谷歌的Maven中央仓库的服务器毕竟是在国外,访问起来不是很方便,不过在国内的阿里云Maven镜像仓库地址中appcompat-v7仍然在照常更新,阿里云的国内Maven镜像仓库地址为:

http://maven.aliyun.com/nexus/

  在该Maven仓库中,我们搜索appcompat-v7,得到的结果是:

这里写图片描述

问题解决

  如上图所示,在阿里云的Maven镜像仓库地址中,截止到2018-5-18日,其最高版本已经更新到了28.0.0-alpha1,所以说我们只要将本地的Gradle中的Maven仓库地址更改成阿里云的即可,更改方式如下:

  在Gradle的构建脚本build.gradle中添加如下语句:

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

compileSdkVersion与appcompat-v7的作用

  在安卓中,compileSdkVersion用于指定构建的SDK版本号,而appcompat-v依赖的作用在于保证该版本的SDK所编译生成的apk能够进行向下兼容,也正因为如此,一般情况下我们需要将compileSdkVersionappcompat-v7指定相同的版本信息,这样能够保证该版本的SDK所编译生成的apk能够得到最好的appcompat-v支持,而如果我们在高版本的compileSdkVersion中选用低版本的appcompat-v7时,这样我们在Gradle中是能够正常使用的,只是其不能保证兼容所有的当前SDK版本之下的所有版本。而当我们在低版本的compileSdkVersion中采用高版本的appcompat-v时,则会出现上面的错误。

猜你喜欢

转载自blog.csdn.net/ZZY1078689276/article/details/80364726