编辑
针对多模块项目,如何加快gradle构建速度
本文访问次数:0
  1. 1. 背景简介
  2. 2. 分析任务
  3. 3. 升级gradle版本
  4. 4. 增加gradle可用内存
  5. 5. 停用PNG处理
  6. 6. 启用离线模式
  7. 7. 禁用lintVital任务
  8. 8. 启用并行构建

背景简介

目前开发的项目采用了多模块(module)管理的方式,模块数量超过40个。开发的过程中发现其构建的速度(点击RunDebug)所需要的时间相对较长,于是通过官方的文档和一些搜索,采用以下方法加快构建速度。

分析任务

首先通过以下命令,分析哪些gradle任务占用了较多时间

gradlew --profile --recompile-scripts --offline --rerun-tasks assembleMkbAkashaFaceV1AuthDeployRelease

这个命令执行了一次完整构建,并且把每个gradle任务所花费的时间都记录在了一个html文件中,如图所示

建议在每次修改gradle配置之后,重新运行此任务,检查是否有改善

升级gradle版本

将gradle升级到android gradle plugin所支持的最新的版本,当前最新版本是4.9

增加gradle可用内存

根据gradle官方项目的一个issuecommit来看,似乎大项目(例如多模块)需要更多的内存运行gradle,而根据官方文档,同样指出最好通过增加gradle可用内存的方式,加快构建速度,在gradle.properties中,设置gradle所需内存

org.gradle.jvmargs=-Xmx2048m 

停用PNG处理

默认情况下,PNG图片会转换为WebP图片,开发时停用此功能,能节省不少时间

android {
  ...
  aaptOptions {
    cruncherEnabled false
  }
}

由于此选项不支持根据口味(flavor)配置,只能在发布的时候手动调整,以免apk太大

启用离线模式

由于某些原因,执行完一次完整的构建之后(Gradle SyncRebuild),最好开启离线模式,已避免网络因素导致的构建速度问题
要在使用Android Studio构建时离线使用Gradle,请执行以下操作:

  1. 点击 File > Settings(在 Mac 上,点击 Android Studio > Preferences),打开 Preferences 窗口。
  2. 在左侧窗格中,点击 Build, Execution, Deployment > Gradle。
  3. 勾选 Offline work 复选框。
  4. 点击 Apply 或 OK。

禁用lintVital任务

afterEvaluate {
    Set<Task> result = tasks.findAll { task -> task.name.startsWith('lintVital') }
    result.each { Task task ->
        task.enabled = false
    }
}

启用并行构建

gradle.properties文件中加入以下代码

org.gradle.parallel=true

需要输入验证码才能留言

  • zongren 2018/08/24 回复 编辑 删除

    mac上android studio遇到了flavor dimensions太多(超过6个)导致内存溢出(或无法回收)的问题,暂时找不到原因