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
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能夠進行向下相容,也正因為如此,一般情況下我們需要將compileSdkVersion
與appcompat-v7
指定相同的版本資訊,這樣能夠保證該版本的SDK所編譯生成的apk能夠得到最好的appcompat-v
支援,而如果我們在高版本的compileSdkVersion
中選用低版本的appcompat-v7
時,這樣我們在Gradle中是能夠正常使用的,只是其不能保證相容所有的當前SDK版本之下的所有版本。而當我們在低版本的compileSdkVersion
中採用高版本的appcompat-v
時,則會出現上面的錯誤。