我正在从 OSX 上的命令行编译我的(相当简单,只有 5 个文件,数百个 LOC)应用程序:
Ant 调试
它有效。但它运行缓慢:
构建成功
总时间:
26 秒
这是为什么呢?即使我只更改一个 java 文件中的一行,也需要这么多时间。大部分时间花在 dex
阶段(大约 20 秒),这是 AFAIK 创建 Dalvik 字节码。但是我的 friend 也在使用 Eclipse 在 Windows 上从事同一个项目,他说在他的机器上编译只需要一两秒钟。我可以做些什么来加快这个过程吗?
最佳答案
我终于找到了解决方案!这有点小技巧,但它确实有效。
首先,进入您的 ANDROID-SDK/platform-tools 目录,然后将 dx
应用重命名为其他名称,例如 dextool
,最后创建新的 dx
文件内容:
#!/bin/sh
shift
dextool --dex --incremental --no-optimize $@
将“dextool”替换为您之前选择的名称。这将为每个 dex 调用添加(未记录的)--incremental 属性,这将通过仅对在构建之间发生变化的类进行 dex 化来大量减少构建时间。现在看起来像这样:
[dx] 将 dex A (1 defs/11,3KiB) 与 dex B (359 defs/1253,2KiB) 合并。结果是 359 defs/1519,3KiB。花了 0,5s
0.5s 而不是 20s 差别很大!
编辑 - 几句话:
- 在使用它之前你必须至少编译一次你的项目,因为它使用了以前的 classes.dex 文件
- 使用 ant 以外的其他 Android 工具链时可能会遇到问题
更新:
Google 发布了 SDK 工具 21.0,它使上述调整被废弃,因为它确实支持 pre-dexing。终于!
关于android - 从命令行编译Android项目很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12088375/