熟悉Android studio(安卓死丟丟)或者idea的哥們都能深刻體會到gradle構(gòu)建的優(yōu)秀。
同時我們又難以接受的是gradle初始化的緩慢--奶躯,老鐵帚桩,扎心了。
如果你每天是開著VPN不斷線嘹黔,那么可以不用看了 --
其實我們有的時候走心一點可以看到idea(Android studio基于idea社區(qū)開源版制作的账嚎,所以統(tǒng)稱idea)上面任務(wù)進度欄那里有提示正在下載gradle,地址如下:
https://services.gradle.org/distributions/gradle-3.3-all.zip
沒錯儡蔓,上面的地址就是gradle環(huán)境依賴的壓縮包郭蕉,同時在idea的gradle項目build完成后,我們可以在項目目錄下面找到一個gradle目錄喂江,結(jié)構(gòu)示意如下:
- gradle
- wrapper
- gradle-wapper.jar
- gradle-wapper.properties
- wrapper
我們直接打開gradle-wapper.properties查看到信息如下:
#Thu Mar 23 21:03:17 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
我們在上面的properties里面也能看到有我們項目需要的gradle的構(gòu)建版本信息召锈。重點來了,我們在上面可以看到:
distributionBase=GRADLE_USER_HOME
上面的東西可能一樣望去不知所以获询,但是我們大膽猜測GRADLE_USER_HOME這個東西應(yīng)該是用戶的gradle目錄涨岁,xxxPath可能描述的是某一個路徑,這個時候機靈的我們應(yīng)該百度搜索gradle構(gòu)建緩存目錄吉嚣,直接點開Android Studio 和 gradle 修改緩存文件夾路徑就能看到對gradle緩存目錄的描述:
根據(jù)老司機經(jīng)驗總結(jié)如下:
win:
C:\Users\你的用戶名\.gradle
mac:
/Users/你的用戶名/.gradle
直接進入.gradle緩存目錄梢薪,我們一般可以看到如下結(jié)構(gòu):
- .gradle
- daemon
- native
- caches
- wrapper
我們打開wrapper目錄就能印證上面的 wrapper/dists 果然存在,進一步打開尝哆,我們能看到內(nèi)容如下:
![gradle.wrapper緩存目錄](http://acheng1314.cn/wp-content/uploads/2017/03/gradle.wapper%E7%BC%93%E5%AD%98%E7%9B%AE%E5%BD%95.png)
驚喜沮尿,突然發(fā)現(xiàn)我上面的gradle-3.3-all在里面,打開gradle-3.3-all剛剛好查看到gradle-3.3-all.zip也在里面较解,這恰恰說明這個就是我們gradle項目的構(gòu)建環(huán)境依賴就在這里畜疾。
所以聰明一點的老司機們都可以把這個wrapper目錄備份下來了,兄弟莫慌印衔,完全不必這個樣子啡捶。我們只需要把我們下載的gradle壓縮包留住就行了。
所以奸焙,構(gòu)建速度加快的思路之文件替換出爐了瞎暑。在我們新項目第一次構(gòu)建很久的時候:
- 我們直接到.gradle/wrapper下面查找idea正在下載的gradle資源
- 然后強行退出idea彤敛,
- 接著下載對應(yīng)的gradle包放到對應(yīng)目錄
- 重新打開idea的項目
上面這樣我們就能把第一次gradle構(gòu)建環(huán)境依賴快速加載完成。
當(dāng)然了赌,更快的是你的項目在打開之前直接把gradle設(shè)置成國內(nèi)源墨榄,這樣我們的gradle環(huán)境就能快速構(gòu)建了。
葵花寶典勿她,加快gradle項目資源構(gòu)建袄秩、獲取速度
Android studio:
- 修改gradle.properties,加入以下代碼
#Gradle守護進程
org.gradle.daemon=true
#并行項目執(zhí)行
org.gradle.parallel=true
#取消檢查lint輸出的增量構(gòu)建
gradle=build -x lint
- 配置項目的build.gradle
buildscript {
repositories {
// maven庫
// 先從阿里云maven下載jar若沒有找到逢并,則在后面的倉庫中尋找
//倉庫優(yōu)先級從上到下順序排列
maven {
url "http://maven.aliyun.com/nexus/content/repositories/central"
}
jcenter()
mavenCentral()
}
dependencies {
···
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
// maven庫
maven { url "http://maven.aliyun.com/nexus/content/repositories/central" }
maven { url "https://jitpack.io" }
jcenter()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
//關(guān)閉項目變更后的lint檢查
tasks.whenTaskAdded { task ->
if (task.name == "lint") {
task.enabled = false
}
}
可能一些朋友不明白為什么是項目的build.gradle之剧。按照idea的構(gòu)建來相對eclipse解釋,一個項目就是一個對應(yīng)的工作空間砍聊,每個工作空間下面的項目都是不同的module背稼,也就是項目有build.gradle,module也有對應(yīng)的build.gradle玻蝌。
- 刪除其他module中的repositories
我們既然已經(jīng)設(shè)置了所有項目的repositories蟹肘,那么其他module中repositories就沒必要設(shè)置了
idea的gradle項目處理
- 在項目的build中加入如下設(shè)置
allprojects {
repositories {
// maven庫
// 先從阿里云maven下載jar若沒有找到,則在后面的倉庫中尋找
//倉庫優(yōu)先級從上到下順序排列
maven { url "http://maven.aliyun.com/nexus/content/repositories/central" }
maven { url "https://jitpack.io" }
jcenter()
mavenCentral()
}
}
tasks.whenTaskAdded { task ->
if (task.name == "lint") {
task.enabled = false
}
}
- 刪除其他module中的repositories
我們既然已經(jīng)設(shè)置了所有項目的repositories俯树,那么其他module中repositories就沒必要設(shè)置了蕾哟。
修改idea項目生成代碼模板超燃,加入以上設(shè)置
···未完待續(xù)胚委,且聽下回分解朦促。