熟悉Android studio(安卓死丢丢)或者idea的哥们都能深刻体会到gradle构建的优秀。
同时我们又难以接受的是gradle初始化的缓慢--,老铁,扎心了。
如果你每天是开着VPN不断线,那么可以不用看了 --
其实我们有的时候走心一点可以看到idea(Android studio基于idea社区开源版制作的,所以统称idea)上面任务进度栏那里有提示正在下载gradle,地址如下:
https://services.gradle.org/distributions/gradle-3.3-all.zip
没错,上面的地址就是gradle环境依赖的压缩包,同时在idea的gradle项目build完成后,我们可以在项目目录下面找到一个gradle目录,结构示意如下:
- 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的构建版本信息。重点来了,我们在上面可以看到:
distributionBase=GRADLE_USER_HOME
上面的东西可能一样望去不知所以,但是我们大胆猜测GRADLE_USER_HOME这个东西应该是用户的gradle目录,xxxPath可能描述的是某一个路径,这个时候机灵的我们应该百度搜索gradle构建缓存目录,直接点开Android Studio 和 gradle 修改缓存文件夹路径就能看到对gradle缓存目录的描述:
根据老司机经验总结如下:
win:
C:\Users\你的用户名\.gradle
mac:
/Users/你的用户名/.gradle
直接进入.gradle缓存目录,我们一般可以看到如下结构:
- .gradle
- daemon
- native
- caches
- wrapper
我们打开wrapper目录就能印证上面的 wrapper/dists 果然存在,进一步打开,我们能看到内容如下:
![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)
惊喜,突然发现我上面的gradle-3.3-all在里面,打开gradle-3.3-all刚刚好查看到gradle-3.3-all.zip也在里面,这恰恰说明这个就是我们gradle项目的构建环境依赖就在这里。
所以聪明一点的老司机们都可以把这个wrapper目录备份下来了,兄弟莫慌,完全不必这个样子。我们只需要把我们下载的gradle压缩包留住就行了。
所以,构建速度加快的思路之文件替换出炉了。在我们新项目第一次构建很久的时候:
- 我们直接到.gradle/wrapper下面查找idea正在下载的gradle资源
- 然后强行退出idea,
- 接着下载对应的gradle包放到对应目录
- 重新打开idea的项目
上面这样我们就能把第一次gradle构建环境依赖快速加载完成。
当然,更快的是你的项目在打开之前直接把gradle设置成国内源,这样我们的gradle环境就能快速构建了。
葵花宝典,加快gradle项目资源构建、获取速度
Android studio:
- 修改gradle.properties,加入以下代码
#Gradle守护进程
org.gradle.daemon=true
#并行项目执行
org.gradle.parallel=true
#取消检查lint输出的增量构建
gradle=build -x lint
- 配置项目的build.gradle
buildscript {
repositories {
// maven库
// 先从阿里云maven下载jar若没有找到,则在后面的仓库中寻找
//仓库优先级从上到下顺序排列
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
}
//关闭项目变更后的lint检查
tasks.whenTaskAdded { task ->
if (task.name == "lint") {
task.enabled = false
}
}
可能一些朋友不明白为什么是项目的build.gradle。按照idea的构建来相对eclipse解释,一个项目就是一个对应的工作空间,每个工作空间下面的项目都是不同的module,也就是项目有build.gradle,module也有对应的build.gradle。
- 删除其他module中的repositories
我们既然已经设置了所有项目的repositories,那么其他module中repositories就没必要设置了
idea的gradle项目处理
- 在项目的build中加入如下设置
allprojects {
repositories {
// maven库
// 先从阿里云maven下载jar若没有找到,则在后面的仓库中寻找
//仓库优先级从上到下顺序排列
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
我们既然已经设置了所有项目的repositories,那么其他module中repositories就没必要设置了。
修改idea项目生成代码模板,加入以上设置
···未完待续,且听下回分解。