0

我在一个小型 Android 应用程序项目上工作,该项目由大约 5k 行代码和少量资源组成。它在 lib/ 文件夹中还有一些库依赖项。问题是我的编译时间很慢。假设我执行以下操作:

ant clean debug

这大约需要 28 秒。执行后续:

ant debug

即使我在编译之间没有更改源代码,仍然需要 9 秒。

似乎大部分缓慢发生在“-dex”目标期间。

如何提高我的 Android 构建的速度性能?

请查看此链接以获取我编辑的“ant clean debug”输出: http: //pastebin.com/XY08mr5G

我正在使用:Apache Ant(TM) 1.8.4 版、Android Debug Bridge 1.0.31 版、Android SDK 工具 22.01、Android SDK 平台工具 17、Android SDK 构建工具 17

谢谢。

4

2 回答 2

0

28 秒对于 Ant 构建脚本来说不算多。编译成 dex 格式确实需要一段时间。我不知道您何时运行 ant 构建脚本,但在开发时,您最好使用带有编译器(如 Eclipse)的 IDE,它将在后台编译。在为测试或发布创建构建时使用 Ant 构建脚本。

于 2013-06-11T15:03:03.427 回答
0

事后看来,我的核心问题是我不相信 Ant 能够正确跟踪自上次构建以来修改了哪些源。我经常发现自己每次编译时都在运行“ant clean debug”,这仅仅是因为我已经被拙劣的构建烧毁了太多次。

如果我有一个目标来执行我的源代码的全新编译,而无需每次都重新编译我所有的依赖库!

这是我的问题的建议解决方案。将此 Ant 目标添加到我的项目的 build.xml 中:

<target name="cl">
    <delete file="bin/classes.dex" />
    <delete file="bin/classes.dex.d" />
    <delete dir="bin/classes" />
</target>

现在运行“ant cl debug”所需的时间要少得多,只需 5 秒。我所有的 Java 源文件都被重新编译,但库不是每次都重新索引。(“干净”目标每次都需要)

我对这个解决方案很满意,并将等待 Android 未来基于 Gradle 的构建系统。运气好的话,它将提供比这个基于 Ant 的系统更通用的目标。

于 2013-08-03T15:28:05.277 回答