gradle升級到4.1後出現的Could not resolve com.android.tools.build:gradle:3.0.1

景陽發表於2018-03-22

錯誤詳細日誌:

gradle升級到4.1後出現的Could not resolve com.android.tools.build:gradle:3.0.1
因為這個問題困擾我將近2天的時間,想說下此問題產生的場景吧。因為專案開發接近尾聲,於是著手在搞“專案持續整合”的工作,大家都知道有個工具叫jenkins,對,沒錯,就是它;因為問題的發生也是它直接血淋淋的告訴我的;專案在jenkins上的配置基本都完成了;然後開始編譯的時候,卻總是被該錯誤無情的攔下,沒辦法;上網找資料,說是要在專案目錄下的build.gradle檔案中的配置google(),如下圖:
gradle升級到4.1後出現的Could not resolve com.android.tools.build:gradle:3.0.1
但,按照要求都配置好後,重新構建還是會出現這個錯(前提:我在專案中直接run或者Generate Signed APK...都是可以的,沒有任何問題);懷疑jenkins外掛問題?也在jenkins的官方jira上提了issue。懷疑jenkins中Gradle版本問題?也配稱了本地的4.1。可以說和本地沒啥區別了;但測試後還是不行,錯誤依然如期而至。頓時,心中一萬個草泥馬在快速奔跑;你他媽逗我嗎?收拾收拾心情,重新去思考;會不會還有什麼其他地方沒注意到,於是繼續盯著錯誤資訊看,看到Could not get resource ‘http://…………’,什麼鬼?拷貝下來,到自己的瀏覽器中去試下;也是提示404,為啥,外掛中的資源沒法訪問下載?難道是我的網路問題,但是都尼瑪好的,也翻牆了,Google搜尋引擎都玩的很愉快,繼續看錯誤日誌;Connect to 127.0.0.1:8888 failed,這不是我開代理設定的地址嗎?難不成是它搞得鬼,於是乎,關掉代理,繼續嘗試,還是他媽的不行啊?誰能告訴我,why?開啟終極大招,重啟jenkins,重啟電腦,再來一邊,終於可以愉快的和這個問題說88了;最後歸根到底是代理惹的禍,跟什麼gradle4.1和com.android.tools.build:gradle:3.0.1沒有任何關係,只要正確的配置google()就行;

其實驗證這個問題,還有一個簡單的測試方法;在專案中的Terminal中輸入命令:./gradlew clean如果能正常執行,那麼jenkins上也就沒有問題的,因為我在jenkins平臺上配置了構件需要先clean專案,所以是一個必走的流程,在本地驗證就行。

tips1:還有如果在本地輸入./gradlew clean提示沒有許可權,如:./gradlew: Permission denied,那需要輸入另外一個命令來開啟許可權:chmod +x gradlew

tips2:如果還有在構件的時候出現,Could not find method google() for arguments [] on repository container這個錯誤就很明顯了,沒有在repositories裡新增google()

還有在整合的過程中,碰到其他問題就不在這一一列舉了,這個問題已攻克,其他都基本很順了;哈哈,寫篇文章在此記錄下,希望能幫助到同樣遇到此類問題的同行們,遇到錯誤,別慌,仔細看錯誤資訊,有問題歡迎留言,一起交流學習;

順帶感謝下之前的同事 @凡 yang

相關文章