How I save 5h/week on Gradle builds
来源:互联网 发布:淘宝买二手书看可以吗 编辑:程序博客网 时间:2024/06/05 23:59
原文地址:https://medium.com/@cesarmcferreira/speeding-up-gradle-builds-619c442113cb#.1vekus12m
新的Android项目构建系统Gradle是基于JVN为基础的构建工具的进化。它从已经发布的工具(如Ant和Maven)中吸取经验,并将它们最好的观念提升到了新的高度。随着Android项目变得愈加复杂,模块化开发习惯也日渐流行,构建效率便受到了诟病。每次编译节省几秒钟将给生产效率带来巨大的不同。
你可能意识到了即便是最简单的Gradle请求也很慢。在我的mac上,它需要花费六秒钟来构建我的一个简单的可用任务项目列表。
这里有一些提升gradle任务执行效率的小技巧:
Gradle Daemon
如果你告诉Gradle使用daemon来构建,那么你就可以减少Gradle的启动时间(在我的电脑上减到了两秒钟)
org.gradle.daemon=true
Parallel Project Execution
这个可以让你在构建有多个子模块依赖的复杂项目上有大不同:
org.gradle.parallel=true
Configure projects on demand
Gradle在执行任务前会配置每个项目,无论它是否需要额外的编译。
“Configuration on demand”模式改变了这种方式,只有需要配置的项目才会被配置。和平行模式类似,配置要求模式会在多模块依赖构建时带来巨大的影响。
全局的gradle.properties
在我们的根目录属性文件中定义的属性优先于我们项目目录属性文件中定义的属性。这背后的原因是你想要在你的构建服务中避免使用Gradle daemon,启动时间较内存消耗便显得不那么重要了:
/Users/cesarferreira/.gradle/gradle.properties
gradle.properties
模块化的代价很高,真的很高
在我现在的项目中我必须要从头编译一些类库,并且需要关联一些不是完全符合我需要的类库。
如果这些模块不适经常修改,那么就要仔细的想一想,从头编译它们,或者检查先前的独立模块是否已经不是最新版本的时间很可能是简单加载.jar/.aar依赖的4倍以上。
提示:运行gradle构建-profile会提供一个HTML报告来显示编译进程的耗时。
注意:在你的版本控制系统中保留不必要的模块来已被不时之需。
从4分钟要21秒
基于这些技巧让我们看看性能报告:
21秒?嗯,这很不错。
任务执行概述
LINT TASK
如果你先看看任务执行的数据,你可能会注意到lint任务花了很长时间,你真的需要在你的新增编译中检查lint输出吗?
gradle build -x lint
到15秒了?很好的提升!
从12秒到8秒
lint vital release
有一个lint检查?它化了大约90%的时间来编译各个模块?
gradle build -x lint -x lintVitalRelease
到了8秒钟!
提示:如果你想要在你的新增编译中永久地略过lint检查,你可以将它添加到你的build.gradle中
总结:
有一个全局的gradle.properties让你的项目都能够继承;
运行gradle构建概述工具;
固定基本的模块依赖(基于概述工具的结果);
略过无关紧要的gradle任务;
- How I save 5h/week on Gradle builds
- qualcomm How to enable camera logs on Android builds?
- Speeding up Gradle builds
- Speeding up Gradle builds
- How to save states of Views in Fragments on TabChange
- Troubleshooting High I/O Wait in Linux --- A walkthrough on how to find processes that are causing h
- Automated Builds on Docker Hub
- Gradle之新建Gradle构建:Creating New Gradle Builds
- Android官网:Configuring Gradle Builds英译
- Android 中文API:Running Gradle Builds
- How to:Save Layout
- How do I download or save a YouTube video to my computer?
- 压缩Gradle构建 (Squeezing your Gradle builds)
- Pressure Builds on Chinese Trade Deficit
- How to Secure Your Web Site Running on IBM i
- How can I install Log::Log4perl on Microsoft Windows?
- How-to create a Calculator on Google Android: Part I
- How should I run fsck on a Linux file system
- 学会感恩,收获人生
- 如何获取url中的参数并传递给iframe中的报表
- 二分查找和快速排序
- Blob进阶4
- 代付
- How I save 5h/week on Gradle builds
- iptables
- 8421
- jQuery写出可调控自定义的平滑滚动效果
- Xcode8 控制台打印的问题 (日志输出的问题)
- 【ARM-Linux开发】Linux下查看机器的CPU负载
- 以前端架构师的思想看问题:解决单页应用,系统角色请求抢占session发送请求问题
- Java基础-05总结方法,数组(一维)
- 数据结构-双链表