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

1,736 阅读4分钟

alt

翻译说明:

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

原文地址: medium.com/mindorks

原文作者: Gaurav Bansal

如果你是 Android 开发人员,那么你将花费大量时间查看屏幕并等待 gradle 构建完成。在新的 Android Studio 中,它比以前的版本要快得多,但仍然有很多空间可以解决它所以让我们快速通过在 Android Studio 中做一些快速修复。在 Google I/O 2017 Google 团队专注于此,这篇文章是从那里提取的。

  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%的构建时间。

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

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。它也会应用更改,直接反映更改直接进入实时进程,而不是重新启动应用程序。

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

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构建时间

alt

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

欢迎关注 Kotlin 中文社区!

中文官网:www.kotlincn.net/

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

公众号:Kotlin

知乎专栏:Kotlin

CSDN:Kotlin中文社区

掘金:Kotlin中文社区

简书:Kotlin中文社区