[译]让咱们加快你的Gradle构建

alt

翻译说明:

原标题: Let’s Speed Up your Gradle Build -

原文地址: medium.com/mindorks

原文做者: Gaurav Bansal

若是你是 Android 开发人员,那么你将花费大量时间查看屏幕并等待 gradle 构建完成。在新的 Android Studio 中,它比之前的版本要快得多,但仍然有不少空间能够解决它因此让咱们快速经过在 Android Studio 中作一些快速修复。在 Google I/O 2017 Google 团队专一于此,这篇文章是从那里提取的。android

  1. 老是使用最新的 ** Android Gradle Plugin** -Android 工做室逐步提升新 gradle 版本的性能,所以建议使用最新版本。目前最新的 gradle 插件是 3.1.2;在这个版本中,studio 已将其编译器 DEX 更改成 D8。默认状况下,Android Studio 如今使用名为 D8 的新 DEX 编译器。默认状况下,Android Studio 如今使用 D8(你也能够禁用它)。DEX 编译是将 .class 字节码转换 .dex 为 Android Runtime(或 Dalvik,适用于旧版 Android)的字节码 的过程 。与以前的编译器(称为 DX)相比,D8 编译速度更快,输出更小的 DEX 文件,同时具备相同或更好的应用程序运行时性能。这个较新的插件版本将致使高达25%的构建时间缩短。缓存

  2. 若是您使用命令行进行构建,请避免遗留 Multidex - 若是咱们的应用程序超过64k方法参考限制,咱们必须使用 Multidex。当在 gradle 文件中咱们有 minSdkVersion <21 时,咱们使用 Legacy Multidex 构建速度要慢不少。若是您正在使用 Android studio > 2.3 版本并使用运行按钮进行构建,那么若是链接的设备版本大于21,它将自动使用本机 multidex,若是版本是 <21,则将自动使用遗留。若是您使用命令行进行构建而后在开发风格内设置 minSdkVersion 21.这将致使最多减小10%的构建时间。bash

  3. Disable Multiple apk for development- 咱们可使用拆分块为特定设备配置建立多个 apk,它能够减小发布版本中的应用程序大小,但在开发中不须要。经过禁用它咱们能够进一步减小10%的构建时间。让咱们看看如何作到这一点。app

alt

android {
    if(project.hasProperty('devBuild')){
        // 开发中禁用 Split apk
        splits.abi.enable = false
        splits.density.enable =false
    }
}
复制代码
  1. 包括最小资源 -若是应用程序有多种语言支持和多屏幕支持,那么在开发风味中添加最少的资源
productFlavors {
    development {
        minSdkVersion 21
        resConfigs ("en","xxhdpi")
    }
}
复制代码
  1. 禁用 PNG Crunching - 默认状况下,Android 构建工具执行 PNG 大小优化,这对于发布构建颇有用,可是对于开发它会增长构建时间。要么使用 WEBP 而不是 PNG,要么在开发风格中禁用它。
android {
    if(project.hasProperty('devBuild')){
        // 开发中禁用 Split apk
        splits.abi.enable = false
        splits.density.enable =false
        // 禁用 PNG 运算
        aaptOptions.cruncherEnabled = false
    }
}
复制代码
  1. 即时运行 - 即时运行会产生不少问题,直到 Android Studio 3.0,如今它稳定而且在设备上工做 sdkVersion≥21。它也会应用更改,直接反映更改直接进入实时进程,而不是从新启动应用程序。jvm

  2. 正确使用 Crashlytics -默认状况下,crashlytics 始终在每一个构建时生成惟一的构建 ID。您能够为调试环境禁用 crashlytics,也能够为开发构建禁用此构建 ID。ide

apply plugin: 'io.fabric'
android {
    buildTypes {
        debug {
            // 禁用 Crashlytics 构建 ID
            ext.alwaysUpdateBuildId = false
        }
    }
}
复制代码
  1. 不要使用动态依赖版本 - 每次都会致使 check studio 是否有新的库版本。这将增长构建时间,避免这种状况
    alt
  2. 在 gradle.properties 文件中,根据应用程序要求更改成 JVM 分配的内存。更改 org.gradle.jvmargs = -Xmx1536m(默认值)。 在 gradle 文件中经过更改 maxheap 大小咱们能够增长 dex 内存可是在 gradle 插件2.1 dex 正在进行中。所以,更改此参数如今不起做用。还要更改如下内容以减小构建时间
#配置后,Gradle将以孵化并行模式运行。
#此选项仅应与分离的项目一块儿使用。
org.gradle.parallel = true
#设置为true时,Gradle守护程序用于运行构建。对于本地开发者构建,这是咱们最喜欢的属性 
#开发人员环境针对速度和反馈进行了优化,所以咱们几乎老是使用守护程序运行Gradle做业。
org.gradle.daemon = true
复制代码
  1. 启用 gradle 缓存 - Caching gradle 将缓存来自任何位置的任何先前构建的任务输出。在 gradle.properties 文件中设置 org.gradle.caching = true 以启用缓存。模块化

  2. 多模块项目 - 模块化还经过并行构建模块来增长 gradle 构建时间。工具

经过使用全部这些技术,您能够在此处改进gradle构建时间post

alt

愉快的写代码!!! 另外,检查Android P中的最新Android运行时改进以及Android Studio中的编译器改进。性能

欢迎关注 Kotlin 中文社区!

中文官网:www.kotlincn.net/

中文官方博客:www.kotliner.cn/

公众号:Kotlin

知乎专栏:Kotlin

CSDN:Kotlin中文社区

掘金:Kotlin中文社区

简书:Kotlin中文社区

相关文章
相关标签/搜索