每次我向我的 Android 项目添加一个库时,编译过程都会变慢。有没有办法缓存(库)dex 文件,以便每次只重新编译应用程序?理想情况下,构建过程应检查库 JAR 是否已更改,如果未更改,则应重用现有的 dex 文件。
我正在使用nbandroid,但我认为 Eclipse 构建遇到了同样的问题。
每次我向我的 Android 项目添加一个库时,编译过程都会变慢。有没有办法缓存(库)dex 文件,以便每次只重新编译应用程序?理想情况下,构建过程应检查库 JAR 是否已更改,如果未更改,则应重用现有的 dex 文件。
我正在使用nbandroid,但我认为 Eclipse 构建遇到了同样的问题。
我正在使用 Eclipse,并且有一些项目包含 2-3MB 的库,除了使用 proguard 编译和签署最终 APK 时,没有注意到任何减速。看起来 Eclipse 不会每次都重新编译库。
Android SDK(无论使用哪个 IDE)中的构建过程(尤其是在 dex 步骤)非常不灵活。dx.jar AFAIK 的唯一命令用法如下所示:
[信息] C:\Program Files\Java\jdk1.6.0_21\jre\bin\java -Xmx1024M, -jar, C:\Program Files\Android\android-sdk\platform-tools\lib\dx.jar, - -dex, --output=C:\workspace\myproject\target\classes.dex, C:\workspace\myproject\target\classes, C:\workspace\myproject\libs\common-lib.jar, ... 。 ..
从这里您可以看到带有外部 jar 库的编译类在项目构建时被 dexed。
有没有办法缓存(库)dex 文件,以便每次只重新编译应用程序?
每次构建项目时,Jar 库都会被 dexed,而不是由 Android SDK 重新编译。我不认为 Android SDK 提供了 dx.jar 的另一种命令用法,您可以使用它来仅对没有外部 jar 库的编译类进行 dex,然后合并到预先存在的 classes.dex 中(可能是上次生成的)。
这在项目构建时是不可能的,但是,它可能是题外话,但是您可能对这篇关于在运行时动态加载 jar 库的博客感兴趣,值得一试。