加快 Android 构建过程
Posted
技术标签:
【中文标题】加快 Android 构建过程【英文标题】:Speeding up the Android build process 【发布时间】:2012-03-11 10:01:08 【问题描述】:这是一个真正的菜鸟问题。我在一家公司工作,该公司开发了 100 多个使用许多相同组件的应用程序。在构建时有一些小的定制,我们希望加快速度以提高效率。大多数自定义是在运行时从服务器下载数据完成的。
我们完成一个项目的最快速度 .apk 大约是 15 分钟。此过程涉及更改包名称、图标和几个字符串资源。但是当您每天处理 15-20 个应用程序时,这可能会成为实时杀手,我宁愿花时间编写新代码。
我读过有关使用 Maven 或 Gradle 来简化构建过程的信息,但我不确定这是否是减少构建时间的最佳方式。坦率地说,我什至不知道它们是否是合适的工具。
如果使用其中一种工具可以完成我正在寻找的东西,或者是否有其他方法可以减少构建时间,有人可以向我解释一下吗?任何建议将不胜感激。
【问题讨论】:
【参考方案1】:我肯定会建议在 android Maven 插件中使用。如果您的应用程序只是轻微的定制,您应该能够将大部分工作转移到您构建一次的外部库中,然后在每个应用程序的构建时只启动定制。以你所说的规模,这很容易值得付出努力。
查看插件站点和我写的关于 using Maven for Android development 的章节,作为入门者并感受一下。
【讨论】:
优秀的参考!看起来它包含我需要的所有细节以及更多。感谢您花时间以书面形式记录下来。【参考方案2】:采用一些命令行构建工具,如 Maven 或 Ant 绝对是正确的方向,它使使用 Unix/Windows shell 脚本批量构建过程成为可能。
结合使用 maven-properties-plugin 和 android-maven-plugin 可以很容易地实现您需要的那些小自定义。 android-maven-plugin 支持资源过滤。您可以将每个构建周期的自定义属性定义为多个属性文件,在构建过程中,android-maven-plugin 可以从外部属性文件中读取这些值并将这些值替换为 AndroidManifest.xml 和其他资源文件(如 res/values/)字符串.xml。 android-maven-plugin 还全面支持 Android Library Project,让您可以提取/集中常见的 android 代码并轻松管理所有代码。
假设你想从同一个 Android 项目构建 5 个 apk 发行版,在 string.xml 中具有不同的包/应用名称、应用图标和一些资源,你可以创建 shell 脚本运行 mvn deploy 5 次,每次复制一个您的 customize.properties 与适当的其他 icon.png 文件进入项目目录并覆盖现有的。这为您提供了不需要任何人工交互的端到端自动构建批处理。
您可以找到一个示例项目MorseFlash 检查android-maven-plugin 使用的资源过滤。
【讨论】:
很好的描述,感谢您插入我的 MorseFlash 示例应用程序 ;-) @Manfred Moser,感谢您的示例项目,当第一次接触 android-maven-plugin 时,这些确实让开发人员的生活变得更加轻松:) @yorkw,非常感谢您的输入和项目示例。这非常有帮助。现在我知道我应该朝哪个方向努力了。谢谢! @Rymnel,祝你好运,我同时使用了两个 maven 插件,但从未尝试使用 shell 脚本,我没有那么多项目需要维护。【参考方案3】:尝试在多核机器上使用 make 并通过提供在内核之间拆分构建过程
make -j<x> command
【讨论】:
感谢您的反馈,但这并不是我想要的。也许我的措辞是错误的。我正在寻找在构建时快速更改资源和包名称的方法。以上是关于加快 Android 构建过程的主要内容,如果未能解决你的问题,请参考以下文章
在 IntelliJ IDEA 中加快 Android 项目构建时间
加快QT工程编译速度(还可给Qt for Android设置)