一直在构建版本_教你如提升Gradle90%的构建速度
一、第一个最有效的办法
检查你使用的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%的构建速度相关推荐
- 一直在构建版本_球鞋 | 一鞋两穿?AJ1十孔版本登场,拉链设计还是真香了?
• 全新十孔版本 Air Jordan 1 即将登场 随着近几年 Air Jordan 1 诞生了越来多的配色,也满足了越来越多人的需求.除此之外,此前推出的 Air Jordan 1 Zoom Co ...
- 一直在构建版本_构建系统与代码结构SpringBoot
从今天开始,我们进入SpringBoot的使用环节,这一部分包含了构建系统,自动配置,如何运行应用程序,自然也包括了一些使用SpringBoot的最佳实践.关于SpringBoot的介绍,Anders ...
- 苹果微信更新不了最新版本_教你安卓微信怎么更新到最新版本?
一般来说应用更新的时候都会有提醒,有些会显示小红点提醒你有新版本,有的会直接弹出窗口或者对话框,提醒你更新版本,而有的需要你直接去查是否有最新版本. 近期微信推出了7.0版本,现在已经从苹果及部分安卓 ...
- 一直在构建版本_升级成2.0版本的自己,生活会有什么不一样
李笑来老师在<把时间当作朋友>的序言中有段话: 人们生活在同一个世界,却又各自生活在自己的那个版本之中,改变自己,就意味着属于自己那个版本的世界也会随之变化,其中包括时间的属性,当同样的时 ...
- 怎么查看自己安装的python版本_教你如何检查 Python 版本
本教程介绍如何使用 命令行检查操作系统上安装的 Python 版本.这在安装用 Python 编写的需要特定版本 Python 的应用程序时非常有用. Python 是世界上最流行的编程语言之一.它用 ...
- fiddler设置中文版本_教你下载iOS老版本应用
大家都知道,苹果一旦升级了新版本的系统,基本上是不可能回滚到旧版本的.App 也是一样,升级了新版本后,官方也是没有提供旧版本回滚安装的!小狐在此也是非常懊恼. 那么有些小伙伴觉得新版本 App 难用 ...
- vue.js 构建项目_使用Vue.js和AWS Amplify构建Chatbot
vue.js 构建项目 Over the last few years, chatbots have exploded in popularity. It makes sense that busin ...
- 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 ...
- 一直在构建工作空间_大华股份殷俊:AI,构建数字世界的基础
10月27日,由雷锋网 & AI掘金志主办的「全球AI芯片·城市智能峰会」,在深圳大中华喜来登酒店盛大召开. 延续雷锋网大会一贯的高水准.高人气,「全球AI芯片·城市智能峰会」以"城 ...
最新文章
- Linux系统简介 、 安装Linux系统 、 RHEL6基本操作
- angular中的依赖注入
- 职称计算机必考和选考,2017职称计算机考试选择题「附答案」
- [转]Vim常用命令速查
- 整顿满月,如今现金贷生不如死
- iphone固件降级_iPhone无法开机怎么办?三种快速维修方法
- python @修饰符_Python修饰符,返回替换了一个或多个参数的函数
- 在 MacBook 中如何将外置屏幕设置为主屏幕?
- F - 小希的迷宫 (并查集)
- PHP把商品详情数据加入到商品数据,如果商品有多个详情只展示一次商品数据
- ALL_TAB_COLS
- Distribute Strategy--翻译学习
- 弘辽科技:新手开淘宝店的步骤有哪些?如何起步?
- 房产行业数字化转型迷思:技术能提供何种助力?
- 通过QQ音乐接口获取数据+播放源
- elasticsearch从入门到入门系列(一)---简单介绍及安装
- Java中如何将一个数组分割成多个等长度的数组
- js中的reduce函数详细解释
- 生活就像个洋葱,一层一层剥开它,总有一层让你流泪
- 星空联盟全面采用AWS以开创航空旅行新时代
热门文章
- 查找占用内存最大进程所在路径命令
- 每日linux命令学习-历史指令查询(history、fc、alias)
- DisJSet:Wireless Network(POJ 2236)
- Python之数据分析(Numpy中的除法和取余、三角函数、ufunc对象的位运算)
- 十堰市人民小学一年级在计算机学校,我上一年级啦!
- declare sql语句_SQL语句大全【第二部分】技巧+经典案例
- Python内置函数any()、map()组合运用案例一则
- 1900页Python系列PPT分享一:基础知识(106页)
- 哈夫曼编码原理与Python实现代码(附手动推导过程原稿真迹)
- 几行Python代码打造自己的磁盘垃圾文件清理器