Android Gradle构建不能更快了? 原因在这 - 2

134 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 11 天,点击查看活动详情

续接上篇: Android Gradle构建不能更快了? 原因在这 - 1

Android Gradle构建不能更快了? 原因在这

对于Android开发者来说,最大的痛点之一就是构建时间. 这是一个真正的问题, 那么为什么尽管有了Gradle和Android Gradle插件的连续版本, 构建一个Android应用仍然需要这么长时间?

但为什么还是会越来越慢呢?

如果我告诉你事实并非如此, 而且它实际上更快呢? Gradle和Java团队在每一次迭代中都会有一些改进, 但都不够显著.

当他们这样做的时候, 有两件事发生了:

你的代码库增加

对于2-50名开发人员的移动团队来说, 很容易看到在2个版本的Android Studio/Gradle之间可以编写更多的代码.

你的硬件在老化

你的电脑本身也在变老, 积累了更多的灰尘, 并运行着其他需要更多内存和CPU的软件. 所有这些, 都减少了一点Android Studio, Gradle和Java自身可以使用的计算能力.

还有什么希望吗?

恐怕答案是否定的. 当然, Gradle团队正在研究一些功能, 试图改善构建时间, 比如配置缓存. 但这并不会极大地改善构建时间.

唯一我没有听说过的领域是使用GPU进行Gradle构建, 据我所知, GPU并不是为这种编译而设计的.

在软件方面, 没有什么可以做的. 当然, 它将会有一点改善, 但并不显著, 不像大多数Android开发者所期望的那样, 例如减少50%的构建时间.

我能做什么?

由于软件不会有太大的改进, 而你的硬件也会继续老化, 我今天看到的唯一有效的解决方案是购买一台新的计算机, 一些有许多核心的计算机, 这样你就可以利用并行执行的优势, 还有一些有相当数量的内存, 因为根据设计, Java需要很多的内存.

许多人认为MacBook Pro M1 Pro/MAX是理想的电脑, 我支持这个观点, 它们有多达10个内核和64GB或内存, 但这种配置的电脑非常昂贵. 在个人电脑领域, 有可能以合理的价格找到8核, Linux也是一个很好的安卓开发操作系统😉.

最后但同样重要的是, 你可以将你的应用程序模块化, 以利用缓存机制. 这可能需要你的团队做出重大努力, 但从长远来看会有回报.

最后一条建议

识别Gradle瓶颈, 可以帮助你确定模块化策略.

./gradlew assembleDebug --profile

还有一个想法

几年前, 当谷歌推出Kotlin时, 我已经在抱怨构建速度慢和笔记本过热了. 而我曾希望有一天他们会抛弃Java, 只用Kotlin来进行本地编译, 根本不需要Gradle, Java或JVM. JetBrains后来提供了Kotlin Native, 它可以将Kotlin代码通过LLVM编译成字节码, 而无需任何JVM.

但是, 为了完全抛弃Java, 一些Android的基础需要用Kotlin或Java以外的任何东西, 最重要的是, 不要依赖JVM. 这将需要对操作系统进行一些深入的改变, 以便直接在硅上运行Kotlin. 我很高兴看到谷歌致力于Kotlin, 任何新的Jetpack库现在都只有Kotlin, 在某些时候, 通过一些桥接和绑定, 我们也许能够不依赖Java或JVM来编译我们的应用程序.

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 11 天,点击查看活动详情