Gradle提速:每天为你省下一杯喝咖啡的时间

栏目: Android · 发布时间: 5年前

内容简介:作为一名 Android 开发同学,当你的工程和代码达到一定规模的时候,相信你一定遇到过编译速度过慢的问题。等待编译的时间,仿佛过了一个世纪,有没有!对于程序猿,时间尤其宝贵,当你修改完一个 BUG 或者想验证一个功能时,却因为编译速度过慢而不得不打断你的思路,也会严重影响你的开发效率。

前言

作为一名 Android 开发同学,当你的工程和代码达到一定规模的时候,相信你一定遇到过编译速度过慢的问题。

等待编译的时间,仿佛过了一个世纪,有没有!

对于程序猿,时间尤其宝贵,当你修改完一个 BUG 或者想验证一个功能时,却因为编译速度过慢而不得不打断你的思路,也会严重影响你的开发效率。

正所谓,磨刀不误砍柴工,所以,减少和提升你工程的编译速度是一个值得立刻开始的重要工作。

如何优化

Gradle 官方的一些优化建议

尽可能的使用最新版本的 Gradle 和 JVM,这是最简单直接的方式,Gradle 开发团队会持续的更新 Gradle 版本,来优化构建速度以及提供一些新的特性,而使用新版本的 JVM,是因为 Gradle 运行在 JVM 上,所以,如果新版本的 JVM 提升了性能,同样也会让 Gradle 跑的更快。

Parallel execution,并行执行 Gradle 的 tasks,在你的 gradle.properties 文件添加以下配置:

org.gradle.parallel=true 

Build Scan,是一个很好的诊断工具,通过该 工具 可以很好的帮助你去分析和解决编译速度慢的问题。

Gradle提速:每天为你省下一杯喝咖啡的时间

使用方法:在你的 Gradle 构建工程里执行以下命令

./gradlew build --scan 

需要注意的是,Build Scan 是高版本的 Gradle(4.3+) 默认才有的功能,针对低版本(4.3以下)的 Gradle 需要额外安装一个插件才可以使用,具体信息可以点击:Build Scan Plugin User Manual

配置阶段

  • 减少不必要的 apply plugin,按需使用。如果某个插件不是所有的模块都要使用的情况下,就不要使用 allprojects{} 的方式。
  • 在配置阶段避免执行一些耗时的工作,比如 IO 操作或者网络请求等

依赖解析

  • 减少动态 (2.+) 版本和 SNAPSHOT 版本的依赖库,通常这种方式的依赖,会强制 Gradle 去远端仓库比对是否有新的变化。
  • 避免不必要和未使用的依赖

任务执行阶段

增量构建,详细请点击:i n the user guide.

Daemon

  • 在老版本的 Gradle 开启 Daemon 配置,而在 3.0 以后的 Gradle 版本是默认支持的。
  • 调整 daemon’s 的堆大小,默认是 1 GB,如需调大,可在你的 gradle.properties 设置:
org.gradle.jvmargs=-Xmx2048M 

使用 implementation 替代 compile,有效的减少编译时的依赖项,需升级至 Gradle 3.4 版本

增量编译,Gradle 可以将依赖关系分析到单个类级别,以便仅重新编译受更改影响的类。 增量编译是 Gradle 4.10 以来的默认编译。 在老的版本中,可以像这样激活它:

tasks.withType(JavaCompile) {  
options.incremental = true  
} 

使用分析报告,通过以下命令可以在编译完成后,生成一份本地的分析报告:

./gradlew assembleDebug --profile 

Gradle提速:每天为你省下一杯喝咖啡的时间

Android 官方的一些优化建议

使用最新版本的工具

  • Android Studio and SDK tools
  • The Android plugin for Gradle

避免编译不必要的资源,比如不必要的语言本地化,你可以只指定一种语言资源和屏幕适配,如以下示例所示:

android { 
  ... 
  productFlavors { 
    dev { 
      ... 
      // The following configuration limits the "dev" flavor to using 
      // English stringresources and xxhdpi screen-density resources. 
      resConfigs "en", "xxhdpi" 
    } 
    ... 
  } 
} 

开启离线模式,

Gradle提速:每天为你省下一杯喝咖啡的时间

开启按需配置

Gradle提速:每天为你省下一杯喝咖啡的时间

  • 注意一:如果你使用的是 Gradle 4.6 版本,而 com.android.tools.build:gradle 版本是 3.0.1 或者 3.1.0,你需要禁用该配置以避免一些不必要的问题,该问题会在将来的 Android Gradle 插件版本中被修复
  • 注意二:在最新的 Android Studio 版本中,configuration on demand 已被移除

使用 WebP 格式的图片,有效减少图像文件大小,而不必执行构建时压缩,可以加快你的构建

关闭 PNG crunching,加快构建速度通过禁用自动图像压缩,Gradle 3.0 版本以上在 debug 的构建类型下是默认关闭的。如需手动配置其他构建类型,如下示例:

android { 
     buildTypes { 
         release { 
             // Disables PNG crunching for the release build type. 
             crunchPngs false 
         } 
     } 
 
 // If you're using an older version of the plugin, use the 
 // following: 
 //  aaptOptions { 
 //      cruncherEnabled false 
 //  } 
 } 

开启 Instant Run

Gradle提速:每天为你省下一杯喝咖啡的时间

最后说几句

其实,有些同学不太重视也不太愿意花精力去折腾这些,想着忍忍也就过去了。但是,随着编译次数的增加,实际所浪费的时间远超出你想象,而从提升团队生产力的角度来看的话,这是一个投入产出比相当高的事情,以本人所参与的一个项目为例,优化后比优化前的构建时间减少了 50%,多出一个喝咖啡的时间还是很轻松的,而整个团队节省下来的时间,可以 code review,可以去学习,可以早点下班,总之,都比你在边等待构建边发呆好!


以上所述就是小编给大家介绍的《Gradle提速:每天为你省下一杯喝咖啡的时间》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro Git

Pro Git

Scott Chacon / Apress / 2009-8-27 / USD 34.99

Git is the version control system developed by Linus Torvalds for Linux kernel development. It took the open source world by storm since its inception in 2005, and is used by small development shops a......一起来看看 《Pro Git》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试