Android:使用预编译库?

时间:2012-05-07 14:05:31

标签: android performance

每次我向我的Android项目添加库时,编译过程都会变慢。 有没有办法缓存(库)dex文件,所以每次只重新编译应用程序?理想情况下,构建过程应检查库JAR是否已更改,如果没有,则应重用prexisting dex文件。

我正在使用nbandroid,但我认为Eclipse构建遇到了同样的问题。

2 个答案:

答案 0 :(得分:0)

我使用Eclipse并且有一些项目有2-3MB的库,没有注意到任何减速,除非用proguard编译和签署最终的APK。看起来Eclipse每次都不会重新编译库。

答案 1 :(得分:0)

Android SDK中的构建过程(特别是在dex步骤中)(无论使用哪个IDE)都非常不灵活。 dx.jar AFAIK的唯一命令用法如下:

  

[INFO] C:\ Program Files \ Java \ jdk1.6.0_21 \ jre \ bin \ java -Xmx1024M,-jar,C:\ Program Files \ Android \ android-sdk \ platform-tools \ lib \ dx。 jar, - index, - 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库的编译类,然后合并到预先存在的classes.dex中(可能是从上次生成的)。

在项目构建时不可能,但是,它可能不是主题,但您可能对此blog感兴趣,在运行时动态加载jar库,值得查看。