1. 程式人生 > >Gradle配置阿里雲Maven映象倉庫地址

Gradle配置阿里雲Maven映象倉庫地址

為什麼需要配置阿里雲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時,則會出現上面的錯誤。