1. 程式人生 > >Failed to resolve: com.android.support:support-annotations:26.0.2的解決方案

Failed to resolve: com.android.support:support-annotations:26.0.2的解決方案

在新增依賴的時候,出現如下報錯:
在這裡插入圖片描述
說我缺少了support-annotations:26.0.2的依賴,那麼問題來了,什麼是support-annotations?我的專案裡面用到了嗎?

support-annotations註解庫簡介

android-support-annotations是Android官方提供的一個註解庫,它提供了許多有用的註解,你能用它們修飾你的程式碼,幫助你發現bug,這些註解的生命週期為原始碼時期,也就是在編譯之後則不再保留,通常用於輔助程式碼上的靜態檢查。

此處關於輔助程式碼檢查我們舉個例子,@NonNull這個註解大家應該都不陌生,@NonNull註解能被用來標註給定的引數或者返回值不能為null,如果一個本地變數的值為null(比如因為過早的程式碼檢查它是否為null),而你又把它作為引數傳遞給了一個方法,並且該方法的引數又被@NonNull標註,那麼IDE會提醒你,你有一個潛在的崩潰問題。

support-annotations註解庫預設是沒有包含的,他們被包裝成一個獨立的庫,如果需要我們要去手動引入,在Gradle中引入這個庫的方式通常如下:

compile 'com.android.support:support-annotations:23.1.1'

但是如果你已經通過這種方式依賴了support-v4庫的話,則不必再顯式宣告依賴它,因為support-v4也依賴於這個庫,由於Gradle的傳遞依賴的特性,你的專案如果依賴了support-v4庫的話,也會依賴到這個註解庫。

然後檢視自己app的build.gradle檔案,發現專案已經依賴了support-v4庫了啊,按照上面所說的,如果依賴了support-v4庫,也就同時依賴了support-annotations註解庫,但是為什麼還是會報異常呢?

同樣的上面之前的做法,直接在gradle檔案引入註解庫的做法也是解決不了問題的,原因如下:

原因分析和解決

support annotations自25.4.0之後support包不在sdk中更新了,需要用谷歌的maven庫,在Project的build.gradle中新增如下谷歌的地址,因此需要我們手動的在Project的build.gradle中新增如下谷歌的地址:

allprojects {
  repositories {
    ...
    //需要新增的部分,兩個倉庫新增其一即可解決  
    maven { url "https://maven.google.com"
} maven { url "https://dl.google.com/dl/android/maven2/"} ... } }

這樣異常就完美解決了。