加速Android构建过程

这是一个真正的noob问题。 我为一家公司工作,该公司生产100个使用大部分相同组件的应用程序。 在构建时有一些小的定制,我们希望加快速度,以提高效率。 大多数自定义是在运行时从服务器下载数据完成的。

我们可以获得最快的项目完成.apk约15分钟。 此过程涉及更改包名称,图标和一些字符串资源。 但是当你每天处理15-20个应用程序时,它们可以成为一个真正的杀手,我宁愿花时间编写新的代码。

我已经阅读过使用Maven或Gradle来简化构建过程,但我不确定这是否是减少构建时间的最佳方法。 坦率地说,我甚至不知道它们是否是合适的工具。

有人可以向我解释,如果使用这些工具中的一个可以完成我正在寻找的东西,或者是否有其他方法可以减少构建时间? 任何建议将不胜感激。

采用一些命令行构建工具(如Maven或Ant)绝对是正确的方向,它可以使用Unix / Windows shell脚本批量构建流程。

使用maven-properties-plugin和android-maven-plugin很容易实现你需要的那些小的定制。 android-maven-plugin支持资源过滤。 您可以将每个构建周期的自定义属性定义为多个属性文件,在构建过程中,android-maven-plugin可以从外部属性文件中读取这些值,并将这些值替换为AndroidManifest.xml和其他资源文件,如res / values / strings.xml中。 android-maven-plugin也完全支持Android Library Project,它允许你提取/集中常见的android代码并轻松管理所有这些代码。

假设您要从同一个Android项目中构建5个apk发行版,其中包含不同的包/应用程序名称,应用程序图标和string.xml中的一些资源,您可以创建shell脚本运行mvn deploy 5次,每次复制一个您自定义的。将具有适当的其他icon.png文件的属性放入项目目录并覆盖现有文件。 这为您提供了一个不需要任何人工交互的端到端自动构建批处理。

你可以找到一个示例项目MorseFlash检查android-maven-plugin使用的资源过滤。

尝试在多核计算机上使用make,并通过给出在核心之间拆分构建过程

make -j command 

我肯定会建议在Android Maven插件中使用。 如果您的应用程序只是轻微的自定义,您应该能够将大部分工作移动到您构建一次的外部库中,然后只有自定义项在构建时为每个应用程序启动。 你所谈论的规模很容易值得付出努力。

查看插件网站和我写的关于使用Maven for Android开发的初学者和感觉的章节。