一、第一个最有效的办法

检查你使用的Gradle插件版本,是不是最新的。如果不是最新的,请升级到Gradle插件的最新版本。
Gradle在升级过程中一直对构建速度做了优化,升级到Gradle最新版本后,能将构建速度提升80%,这是最有效的办法。

二、Gradle的一些配置项

1、Gradle Daemon
开启Gradle的守护进程来构建项目:

org.gradle.daemon=true

2、Parallel Project Execution

如果你要构建一个多Module并且依赖关系比较复杂的项目,那么你可以使用并行项目执行:

org.gradle.parallel=true

3、Global gradle.properties

在Gradle主目录中配置的属性优先级高于在项目中配置的属性。当你并不想一个个项目的去改动配置时,可以定义一份常用的Gradle配置文件放在Gradle的主目录下,它的路径如下:

/Users/用户名/.gradle/gradle.properties

#Enable daemon
org.gradle.daemon=true# Try and findout the best heap size for your project build.
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8# Modularise your project and enable parallel build
org.gradle.parallel=true# Enable configure on demand.
org.gradle.configureondemand=true

三、去掉耗时任务

在项目的Terminal下运行如下命令:

gradle build -profile

可以获取构建报告,它是以HTML的形式展示的。

基于上述的优化,我们看一下当前的构建报告:

第一次执行

由于第一次没有构建缓存,因此第一次比较慢,用时5分11秒。

注意:如果Gradle检测到配置文件有修改,如gralde.properties、build.gradle文件等,则会重新发起构建,时间也会比较长。

第二次执行

相比较第一次,已经有了很大的进步了,用时1分26秒左右。我们再来看一下这一分26秒是用在哪里了:

在Task Execution(任务执行)中,可以看到每一个项目中耗时最长的竟然是lint任务。lint任务就是静态代码检测,不管你有没有用到lint,默认都会执行这个任务。
由于我们项目中并没有用到lint,所以我们将lint任务去掉,也就是在执行build命令时加上-x lint这个参数,即

gradle build -x lint

第三次执行

可以看到将lint任务去掉后,构建时间只用了26秒,这个时间还是可以接受的。

经过上面的优化后,Gradle构建速度从以往平均4分钟,减少到了26秒,优化率达到了89%。

Tips:使用Android Studio任务栏直接点击运行按钮是不能去掉lint任务的,所以为了方便构建后安装应用,可以使用 gradle installDebug -x lint 命令。

四、结论

Gradle的插件版本对Gradle的构建速度相差很大,由于Gradle版本升级一直致力于提升构建速度,所以强烈推荐升级Gradle版本,以获取最大限度的构建速度,再经过Gradle的一些配置和减少耗时任务,完全可以在40秒之内构建好一个项目。

作者:AndroidHint 来源:掘金
链接:https://juejin.im/post/5e491366e51d45270b7d55fb

一直在构建版本_教你如提升Gradle90%的构建速度相关推荐

  1. 一直在构建版本_球鞋 | 一鞋两穿?AJ1十孔版本登场,拉链设计还是真香了?

    • 全新十孔版本 Air Jordan 1 即将登场 随着近几年 Air Jordan 1 诞生了越来多的配色,也满足了越来越多人的需求.除此之外,此前推出的 Air Jordan 1 Zoom Co ...

  2. 一直在构建版本_构建系统与代码结构SpringBoot

    从今天开始,我们进入SpringBoot的使用环节,这一部分包含了构建系统,自动配置,如何运行应用程序,自然也包括了一些使用SpringBoot的最佳实践.关于SpringBoot的介绍,Anders ...

  3. 苹果微信更新不了最新版本_教你安卓微信怎么更新到最新版本?

    一般来说应用更新的时候都会有提醒,有些会显示小红点提醒你有新版本,有的会直接弹出窗口或者对话框,提醒你更新版本,而有的需要你直接去查是否有最新版本. 近期微信推出了7.0版本,现在已经从苹果及部分安卓 ...

  4. 一直在构建版本_升级成2.0版本的自己,生活会有什么不一样

    李笑来老师在<把时间当作朋友>的序言中有段话: 人们生活在同一个世界,却又各自生活在自己的那个版本之中,改变自己,就意味着属于自己那个版本的世界也会随之变化,其中包括时间的属性,当同样的时 ...

  5. 怎么查看自己安装的python版本_教你如何检查 Python 版本

    本教程介绍如何使用 命令行检查操作系统上安装的 Python 版本.这在安装用 Python 编写的需要特定版本 Python 的应用程序时非常有用. Python 是世界上最流行的编程语言之一.它用 ...

  6. fiddler设置中文版本_教你下载iOS老版本应用

    大家都知道,苹果一旦升级了新版本的系统,基本上是不可能回滚到旧版本的.App 也是一样,升级了新版本后,官方也是没有提供旧版本回滚安装的!小狐在此也是非常懊恼. 那么有些小伙伴觉得新版本 App 难用 ...

  7. vue.js 构建项目_使用Vue.js和AWS Amplify构建Chatbot

    vue.js 构建项目 Over the last few years, chatbots have exploded in popularity. It makes sense that busin ...

  8. kotlin 构建对象_使用Kotlin,TypeScript和Okta构建安全的Notes应用程序

    kotlin 构建对象 I love my job as a developer advocate at Okta. I get to learn a lot, write interesting b ...

  9. 一直在构建工作空间_大华股份殷俊:AI,构建数字世界的基础

    10月27日,由雷锋网 & AI掘金志主办的「全球AI芯片·城市智能峰会」,在深圳大中华喜来登酒店盛大召开. 延续雷锋网大会一贯的高水准.高人气,「全球AI芯片·城市智能峰会」以"城 ...

最新文章

  1. Linux系统简介 、 安装Linux系统 、 RHEL6基本操作
  2. angular中的依赖注入
  3. 职称计算机必考和选考,2017职称计算机考试选择题「附答案」
  4. [转]Vim常用命令速查
  5. 整顿满月,如今现金贷生不如死
  6. iphone固件降级_iPhone无法开机怎么办?三种快速维修方法
  7. python @修饰符_Python修饰符,返回替换了一个或多个参数的函数
  8. 在 MacBook 中如何将外置屏幕设置为主屏幕?
  9. F - 小希的迷宫 (并查集)
  10. PHP把商品详情数据加入到商品数据,如果商品有多个详情只展示一次商品数据
  11. ALL_TAB_COLS
  12. Distribute Strategy--翻译学习
  13. 弘辽科技:新手开淘宝店的步骤有哪些?如何起步?
  14. 房产行业数字化转型迷思:技术能提供何种助力?
  15. 通过QQ音乐接口获取数据+播放源
  16. elasticsearch从入门到入门系列(一)---简单介绍及安装
  17. Java中如何将一个数组分割成多个等长度的数组
  18. js中的reduce函数详细解释
  19. 生活就像个洋葱,一层一层剥开它,总有一层让你流泪
  20. 星空联盟全面采用AWS以开创航空旅行新时代

热门文章

  1. 查找占用内存最大进程所在路径命令
  2. 每日linux命令学习-历史指令查询(history、fc、alias)
  3. DisJSet:Wireless Network(POJ 2236)
  4. Python之数据分析(Numpy中的除法和取余、三角函数、ufunc对象的位运算)
  5. 十堰市人民小学一年级在计算机学校,我上一年级啦!
  6. declare sql语句_SQL语句大全【第二部分】技巧+经典案例
  7. Python内置函数any()、map()组合运用案例一则
  8. 1900页Python系列PPT分享一:基础知识(106页)
  9. 哈夫曼编码原理与Python实现代码(附手动推导过程原稿真迹)
  10. 几行Python代码打造自己的磁盘垃圾文件清理器