Android Studio不能獲取遠端依賴包的解決方法

viclee108發表於2016-03-27

       最近被一個AS的sync問題困擾,在引入遠端依賴包的時候,會出現一個sync錯誤,提示找不到這個類庫。然而,並不是所有的工程都會出現這個問題,有的工程引入同樣的類庫卻沒有問題。

       Error:(25, 13) Failed to resolve: com.jakewharton:butterknife:5.1.1

       網上查了下(http://stackoverflow.com/questions/20746071/failed-to-build-android-hello-world-application-in-offline-mode),說是設定了offline work,需要將gradle設定裡的offline work去掉,然而我的AS中並沒有勾選這個選項。

       試一下把這個選項開啟是什麼效果,開啟後重新sync出現下面的錯誤,和之前的錯誤有點差別,多了錯誤提示“Disable offline mode and Sync”。也就是說,出現瞭如下這個問題的時候,可以通過關閉“offline work”選項來解決。

 

       還是沒有找到我們問題的真正原因,只能繼續排查。偶然間發現另外一個工程中的build.gradle檔案中配置有些不同的地方,比出錯工程的build.gradle檔案多了一段。

       出錯工程的build.gradle檔案配置:

 

apply plugin: 'android'
buildscript {
    repositories {
        jcenter {
            url "http://jcenter.bintray.com/"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

 

 

 

       正確工程的build.gradle檔案配置:

 

apply plugin: 'android'
buildscript {
    repositories {
        jcenter {
            url "http://jcenter.bintray.com/"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

 

 

 

       試著給正確工程的build.gradle新增上這一段配置,重新sync,竟然通過了。。。

       前面已經配置了遠端倉庫,怎麼還需要再配置一份呢?還是需要查下build.gradle中的buildscript和allprojects兩個配置項有什麼差別。

       原來buildscript中的宣告是gradle指令碼自身需要使用的資源。可以宣告的資源包括依賴項、第三方外掛、maven倉庫地址等。而在build.gradle檔案中直接宣告的依賴項、倉庫地址等資訊是專案自身需要的資源。

       “allprojects”這個配置項在Android Studio預設生成的工程中的build.gradle檔案中是存在的,我這個工程之所以沒有,是由於我的工程是從Eclipse工程轉換來的。

      希望上面的內容可以幫到有需要的同學。

 

       歡迎關注我的公眾號一起交流學習

     

相關文章