gradle 入坑指南(基本原理介紹+錯誤集錦)
這次我真的是算是掉坑了,必須寫一波來抒發自己對gradle的敬畏之心。
本文主要講解在Android Studio中gradle配置的坑。
文章目錄
- 關於Android Studio 中的 Gradle
- Gradle相關配置
- 錯誤集錦(終於可以吐槽了)
- 錯誤1:Unknown host 'd29vzk4ow07wi7.cloudfront.net'. You may need to adjust the proxy settings in Gradle.
- 分析和解決:
- 錯誤2:gradle下載不了第三方庫、 Could not download 、 Connet refused
- 分析和解決:
- 錯誤3:org.gradle.api.resources.ResourceException: Could not get resource
- 錯誤4:ERROR: The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?
關於Android Studio 中的 Gradle
描述:Android Studio預設整合Gradle,主要有兩種途徑:自動下載和本地下載選擇。
1.用gradle wrapper 中的版本配置,去下載安裝gradle 。
詳情步驟:
-
檢視gradle-weapper properties 檔案裡指定gradle下載地址。
例子指定了下載gradle4.1版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
如下圖: -
檢視gradle外掛和gradle版本關係是否對應,不對應會報錯。
如上圖:我們下載的是4.1版的gradle,我們可以用3.0.0+。對應關係表傳送門(需要翻牆)
關係對照表(更新至2019.1.30日)
2.本地下載,然後Android Studio選擇對應版本。
步驟詳情:
preference
-> Gradle
->Use local gradle distribution
Gradle home 填寫Gradle本地下載地址。
同樣需要指定gradle外掛版本與本地選擇版本對應。
Gradle相關配置
這幾天採坑,搜帖子發現很多部落格都是為了解決問題而解決問題,有些選項不瞭解什麼意思就敢點(我也點了)。不瞭解原理和報錯原因,就開始動手會把問題複雜化。
下面是gradle一些配置說明:
1.Offline work工作模式
配置描述:
離線模式工作,看這個名字已經明白了一二。
離線工作模式會從快取中獲取依賴庫,而不去網路下載。如果快取中沒有依賴,開啟這個模式一定會失敗。
The --offline command line switch tells Gradle to always use dependency modules from the cache, regardless if they are due to be checked again. When running with offline, Gradle will never attempt to access the network to perform dependency resolution. If required modules are not present in the dependency cache, build execution will fail.
2.Enable embedded Maven repository
配置描述:
允許加入maven倉庫,我是Mac版Android Studio預設不是勾選的。
3.設定HTTP代理
設定完後置gradle.properties檔案會出現設定內容,如果不用記得清除。(下面截圖不是上個圖配置地址,只是想說下位置
錯誤集錦(終於可以吐槽了)
錯誤1:Unknown host ‘d29vzk4ow07wi7.cloudfront.net’. You may need to adjust the proxy settings in Gradle.
詳情描述:
分析和解決:
這裡提示你開啟離線模式和去設定HTTP代理。
我剛建的專案,讓我開啟離線模式去工作,這不是扯淡嗎?快取現在什麼都沒有。(如果你開啟離線模式,然後重新同步,它就會提醒你立馬關上。)
然後是設定HTTP代理(步驟介紹上文),設定過之後也可以翻牆。你發現並沒有卵用。
原因:
Mac版Android Studio預設不是勾選Enable embedded Maven repository,然後gradle無法下載在maven倉庫的依賴。
解決:如上文
錯誤2:gradle下載不了第三方庫、 Could not download 、 Connet refused
分析和解決:
原因:被牆了,gradle無法下載依賴庫
解決:要麼翻牆,要麼採用國內映象。推薦採用阿里映象很快。
allprojects {
repositories {
maven {
name "aliyunmaven"
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
}
}
錯誤3:org.gradle.api.resources.ResourceException: Could not get resource
解決:如上文
錯誤4:ERROR: The SourceSet ‘instrumentTest’ is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?
專案中 gradle 配置
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
原因:
是這裡出問題了 instrumentTest.setRoot(‘tests’) ,你可能在升級 Android Studio 時更新了專案的 gradle 配置,這裡的配置中 instrumentTest 已被棄用,不適用於現在的 gradle 版本。
解決辦法:
用 androidTest 替換 instrumentTest,編譯執行即可。
待續 …(希望不續)
相關文章
- Android開發錯誤集錦Android
- 【論文寫作】錯誤集錦
- Python錯誤集錦:IndentationError: unexpected indentPythonError
- Gradle介紹Gradle
- RSA 2019 創新沙盒入圍廠商介紹集錦(下)
- RSA 2019 創新沙盒入圍廠商介紹集錦 (上)
- angular——線上競拍錯誤集錦(一)Angular
- docker 踩坑集錦Docker
- Go常見錯誤集錦 | 字串底層原理及常見錯誤Go字串
- Go 常見錯誤集錦 | 字串底層原理及常見錯誤Go字串
- 三層登陸程式碼及錯誤集錦
- Python錯誤集錦:for x in range(5) ^ SyntaxError: invalid syntaxPythonError
- AIX 5.3 Install Oracle 10g RAC 錯誤集錦AIOracle 10g
- AndroidStudio之app/build.gradle問題集錦AndroidAPPUIGradle
- http代理401錯誤程式碼介紹HTTP
- 機房重構七層登陸之錯誤集錦
- 《Android Gradle權威指南》之Gradle入門AndroidGradle
- Python3 錯誤和異常介紹Python
- 代理IP常見錯誤程式碼介紹
- Go 常見錯誤集錦之 append 操作 slice 時的副作用GoAPP
- Flink入坑指南第一章-簡介
- JavaScript 倒數計時踩坑集錦JavaScript
- UIStackView 入坑指南UIView
- vim 入坑指南
- 帶你入坑大資料(三) --- MapReduce介紹大資料
- Mysql錯誤集MySql
- 簡單介紹Python 處理錯誤的原則Python
- C# 資料操作系列 - 19 FreeSql 入坑介紹C#SQL
- 四月前端知識集錦(每月不可錯過的文章集錦)前端
- 六月前端知識集錦(每月不可錯過的文章集錦)前端
- 五月前端知識集錦(每月不可錯過的文章集錦)前端
- 函式程式設計基本原理介紹函式程式設計
- http代理504閘道器超時錯誤原因介紹HTTP
- Go 快速入門指南 - 實現系統錯誤介面Go
- 執行錯誤集
- Elasticsearch 參考指南(介紹)Elasticsearch
- java 入門篇 問題集錦Java
- uni-app 入坑指南APP