如何提高你的Android项目的构建速度

最近,我承担的任务迁移Android代码库吴市AndroidX。似乎完美的机会,试图修复项目的建设速度。Gradle总是有一个坏的代表缓慢,资源密集型的,但我很惊讶小改变项目的构建配置可以大大提高建设速度。

给你一个先睹为快的时间我能够摆脱从我们清洁的构建,这是一个前后指标从构建扫描。

pre-optimisation
post-optimization⚡️⚡️

从5.5分钟17秒? ?这是疯狂的

很容易走极端的优化可以执行进一步降低您的构建时间。但我要故意关注小,无痛的措施我接近这个指标为了保持这篇文章中,系统。

但首先!

之前开始优化,指标是很重要的我们的项目目前需要多长时间来构建。它有一个方便的扫描选项,您可以使用它来分析你的任务的性能。启动终端在Android上工作室,执行以下命令:

。/ gradlew assembleDebug——扫描

一旦构建成功完成,它将提示您接受服务条款上传您的构建扫描结果。类型是的继续。一旦它完成出版,你会得到一个链接在终端检查您的构建扫描。打开链接。

在网站上有相当多的选项,但为了简便起见,我们只会看一看什么是最重要的。

摘要视图显示你的摘要任务运行,用了多长时间来完成。但是我们这里是感兴趣性能部分。它给你一个更详细的故障总数的构建时间如下所示。

性能部分,下有一个设置和建议选项卡,给你建议如何改善您的构建速度。让我们检查一下。

我们可以找到一些简单的修复在本节建立的速度。让我们继续,这些建议适用于我们的项目。

步骤# 1:更新你的工具

Android团队不断改进和不断发展的Android构建系统。所以大部分的时间你可以得到显著改善,采用最新版本的工具。

这个重构的时候,我们的项目3.2.1版本Gradle Android插件的工作室(以上几个版本最新版本)。

你可以访问这个链接获得最新版本的版本的Gradle插件。

在写这篇文章的时候,恰好是最新的版本3.4.0版本。

但它有一个问题,我们需要记住后:

https://developer.android.com/studio/releases/gradle-plugin

当使用Gradle 5.0及以上我们需要明确增加堆大小,以确保我们的建造速度不会恶化。我们会回到这一分钟。

打开顶层build.gradle根的文件,你会发现你的项目,并添加以下行中依赖的部分:

类路径的com.android.tools.build: gradle: 3.4.0

您还需要更新分布的URL在属性文件位于gradle包装器gradle /包装/ gradle-wrapper.properties。更新以下的URL。

(这个链接将是可用的Android Gradle插件发布页面。)

distributionUrl = https \: / /services.gradle.org/distributions/gradle-5.1.1-all.zip

如果您使用的是芬兰湾的科特林在你的项目中,你会遇到一个错误如果你芬兰湾的科特林Gradle小于插件的版本1.3.0。如果是这种情况,使用IDE的提示更新芬兰湾的科特林Gradle插件到最新版本(写这篇文章的时候发生的版本1.3.31)。

好吧,让我们再次运行构建从终端,看看我们取得任何进步。

第二步:更新您的配置

所以我们能够摆脱约2.5分钟从构建时间但还是不够好。构建登录终端调查之后,我偶然发现一行对我们感兴趣的:

增量编译基本上防止浪费整个组源文件的编译,而只编译的文件已经改变了。看日志,很明显,我们不利用这个特性。这表明我们使用android.enableSeparateAnnotationProcessing = true但由于我们使用芬兰湾的科特林在我们的项目中,我们不应该使用“annotationProcessor”配置。

幸运的是,芬兰湾的科特林版本1.3.30添加了支持增量注解处理。

https://kotlinlang.org/docs/reference/kapt.html

所以让我们

  1. 改变annotationProcessor配置kapt
  2. 启用增量注解处理实验的旗帜

打开你的模块级build.gradle文件和文件的顶部添加以下行:

应用插件:“kotlin-kapt”

接下来,改变所有annotationProcessor配置部分使用kapt的依赖关系。这里有一个例子:

/ /之前
annotationProcessor com.google.dagger: dagger-compiler: 2.9”
/ /后
kapt com.google.dagger: dagger-compiler: 2.9”

现在打开你的gradle.properties文件位于您的项目的根源,并添加以下行:

kapt.incremental.apt = true

让我们再次运行构建。

好吧,看来我们要。

第三步:Gradle属性

我们现在在最后阶段。记得我们遇到的问题,而我们Gradle插件版本更新?原来的新版本Gradle减少堆大小为512 MB,这是确保低端机器不阻塞。我在16 g机器我可以给周围2-3gigs Gradle守护进程,但你的情况可能不同。

打开gradle.properties文件位于您的项目,并添加以下的根线。记得选择机器大小根据你的要求和规范。

org.gradle。jvmargs = -Xmx3072m - xx: MaxPermSize = 512 - xx: + HeapDumpOnOutOfMemoryError -Dfile.encoding = utf - 8

当我们,让我们也支持并行构建和配置需求的属性。

这是我的最后gradle.properties文件看起来像:

org.gradle。jvmargs = -Xmx3072m - xx: MaxPermSize = 512 - xx: + HeapDumpOnOutOfMemoryError -Dfile.encoding = utf - 8org.gradle.parallel = trueorg.gradle.configureondemand = truekapt.incremental.apt = true
  • org.gradle.parallel——这个标志允许Gradle构建模块在一个项目并行,而不是按顺序。这仅仅是有益的在多模块项目。
  • org.gradle.configureondemand——这个标志只配置模块所需的项目,而不是建筑。

这些,让我们看到我们在构建速度指标:

我们走。

闭幕词

这决不是一个广泛覆盖的方法可以优化他们的项目的建设速度。有很多其他的事情,我并没有在这篇文章中喜欢用minSdk 21当使用MultiDex pre-dexing库,禁用PNG处理,等等,等等。

但大多数这些配置需要一个深入了解Android的构建系统和大型多模块项目的工作经验(这是最明显的好处)。我上面提到的步骤很容易合并在一个项目甚至初级程序员,有可观的回报。我希望这可以帮助您减少您的构建速度!

好吧,直到下一次,和平!✌

- - -

- - -

得到了媒介的应用betway娱乐官网

一个按钮“App Store下载”说,如果点击它会使你的iOS应用程序商店
说一个按钮上,谷歌玩,如果点击它会使你的谷歌商店
Baidu