返回

经过优化,Android项目构建速度可从130秒缩短至17秒!

Android

加快APK构建速度,如何把编译时间从130秒降到17秒(二) #

本文紧接上一篇文章《加快APK构建速度,如何把编译时间从130秒降到17秒》,讲述了初步优化的思路与实现,经过一段时间的优化,性能和稳定性都有很大提高,感谢大家提出的建议以及Github上的issue。本文主要介绍主要优化的点、新功能以及填补的坑。

Android中的可编译脚本

在之前修改了library工程中Library代码的组织方式,让多个module可以编译一个aar。这种方法也存在一些局限性:

  1. 在Android中,gradle不能用来生成非Java代码(XML、Java资源等),因此我们无法从library的gradle脚本中生成这些代码。
  2. 在Android中,gradle脚本是由Android Studio维护的,如果有人编辑了Android Studio中的build.gradle脚本,我们的修改会被覆盖。
  3. 只针对library模块优化,没法优化其他模块。

所以在后续工作中,我们设计了Android的可编译脚本(简称ACS)。ACS是用来生成非Java代码和资源的,从而优化构建速度。

ACS的工作原理

ACS是一个Gradle脚本插件,可以生成Android资源和代码。它包括两个部分:

  1. 一个生成器脚本,用于生成代码和资源。
  2. 一个Gradle脚本插件,用于将生成器脚本集成到Gradle构建过程中。

使用ACS,可以将Android项目的构建过程分为两个阶段:

  1. 生成阶段:ACS生成代码和资源。
  2. 构建阶段:Gradle构建项目。

将Android项目的构建过程分为两个阶段,可以大大提高构建速度,因为在生成阶段,Gradle只需要生成一次代码和资源,而在构建阶段,Gradle只需要将生成的代码和资源打包成APK文件。

使用ACS优化项目

要使用ACS优化项目,需要执行以下步骤:

  1. 安装ACS插件。
  2. 在项目的build.gradle脚本中应用ACS插件。
  3. 创建一个ACS生成器脚本。
  4. 在ACS生成器脚本中,生成代码和资源。
  5. 运行Gradle构建项目。

ACS插件可以从Gradle插件仓库下载,也可以从Github上下载。ACS生成器脚本可以放在项目中的任何位置,但通常放在src/main/acs目录下。

ACS的优势

ACS具有以下优势:

  1. 提高构建速度:ACS可以将Android项目的构建过程分为两个阶段,从而大大提高构建速度。
  2. 提高稳定性:ACS将代码和资源的生成与Gradle构建过程分开,从而提高了构建的稳定性。
  3. 提高灵活性:ACS可以生成任何类型的代码和资源,因此可以用于优化任何类型的Android项目。

ACS的不足

ACS也存在一些不足:

  1. 学习曲线陡峭:ACS是一个新的工具,因此需要一些时间来学习如何使用。
  2. 兼容性问题:ACS目前只支持Gradle 4.0及更高版本,并且只支持Android Studio 3.0及更高版本。

结语

ACS是一种可以大大提高Android项目构建速度的工具。它简单易用,可以与任何类型的Android项目一起使用。如果您正在寻找一种方法来提高项目的构建速度,那么ACS是一个很好的选择。