[译] 改善 Android Studio 的构建速度,快点来白嫖

如果每个版本的构建速度确实越来越快,并且我们可以在数据中看到,那么为什么它们会随着时间的推移而变得越来越慢呢?

我们在更深入的研究之后,意识到在我们的生态系统中发生的事情正在导致构建速度减慢,减慢的速度比我们提升的速度更快。

虽然我们知道随着项目的迭代,代码的增加、资源的使用、语言特性的增加,使项目的构建速度越来越慢,但我们还发现,还有许多其他因素超出了我们的直接控制范围:

  1. 2017 年末的 Spectre 和 Meltdown 补丁对新流程和 I/O 产生了一定影响,使清除构建的速度减慢了 50% 到 140% 之间。
  2. 第三方和客制化的 Gradle 插件:96% 的 Android Studio 开发者使用一些额外的 Gradle 插件(其中一些并没有采用最新的最佳实践)。
  3. 大多数使用的注释处理器都是非增量化的,每次进行编辑时都会导致代码重新全量编译。
  4. 使用 Java 8 语言特性会导致需要执行去语法糖操作,这将影响构建时间。然而,我们已经用 D8 降低了去语法糖操作的影响。
  5. 使用Kotlin,尤其是 Kotlin(KAPT)中的注释处理,也会影响构建性能。我们将继续与 JetBrains 合作,以将影响降至最低。
  • 和真实的项目不同,那些项目的构建时间不会随着时间的推移而增长。Benchmark 模拟更改,然后撤销更改,仅测量我们的插件随时间推移而受到的影响。

  • 3.3 版本专注于未来改善的基础工作(例如,名称空间资源、增量注释处理器支持、Gradle workers),因此提升了 0%。

我们在做什么?

确定内部流程并持续提升性能。

我们也承认,许多问题来自于谷歌拥有的和推广的功能,我们改变了内部流程,以便在发布过程的早期更好地获得构建反馈。

我们还致力于让注释处理器增量化。截至目前,Glide、Dagger 和 Auto Service 都是增量化的,并且我们还在研究其他的。

在最近的版本中,我们还加入了 R light class generation、lazy task 和 worker API,并继续与 Gradle Inc. 和 JetBrains 合作,以持续改善总体构建性能。

属性工具

最近的一项调查显示,约 60% 的开发者不去分析构建的影响或不知道如何分析。因此,我们希望改善 Android Studio 中的工具,在社区中提高对构建时间影响的意识和透明度。

我们正在探索如何在 Android Studio 中更好地提供插件和任务对构建时间影响的相关信息。

你现在能做些什么?

虽然配置时间可能因变量、模块和其他因素的数量而有所不同,但我们希望将与 Android Gradle 插件相关联的配置时间作为参考点,并和实际场景共享数据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果发现构建时间慢很多,可能是有客制化的构建逻辑(或者三方的 Gradle 插件)影响到构建时间。

使用的工具

Gradle 提供了一组免费工具来帮助分析构建中正在发生的事情。

我们建议你使用 Gradle scan,它提供了关于构建的大部分信息。如果你不希望构建信息上传到 Gradle 服务器上,可以使用 Gradle profiler,相对于 Gradle scan,它提供的信息要少一些,但是可以保证所有内容都在本地。

注意:对于那些你可能想使用传统 JVM profiler 的项目,Gradle scan 对研究它们的配置延迟没有帮助。

优化构建配置和任务

在研究构建速度时,这里有几个需要注意的最佳实践,可以随时查看我们的最新最佳实践

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

我一直以来都有整理练习大厂面试题的习惯,有随时跳出舒服圈的准备,也许求职者已经很满意现在的工作,薪酬,觉得习惯而且安逸。

不过如果公司突然倒闭,或者部门被裁减,还能找到这样或者更好的工作吗?

我建议各位,多刷刷面试题,知道最新的技术,每三个月可以去面试一两家公司,因为你已经有不错的工作了,所以可以带着轻松的心态去面试,同时也可以增加面试的经验。

我可以将最近整理的一线互联网公司面试真题+解析分享给大家,大概花了三个月的时间整理2246页,帮助大家学习进步。

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!以下是部分内容截图:

部分目录截图

图:**

[外链图片转存中…(img-GOY7fCxm-1711807568341)]

[外链图片转存中…(img-l0nZ8r8K-1711807568342)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值