Java 根据v17工具以来用于部署的dev box,Android.apk的大小增加了一倍

Java 根据v17工具以来用于部署的dev box,Android.apk的大小增加了一倍,java,android,eclipse,build,apk,Java,Android,Eclipse,Build,Apk,在更新到ADT r17工具之后,我们遇到了一些在.apk中class.dex文件为3.2MB而不是700KB的开发框的问题。除了膨胀的dex文件,应用程序不能从设备启动。它抛出了一个ClassNotFoundException 我们不知所措,因为所有的project/eclipse设置在不同的开发环境中都是相同的 该项目本身由两个库项目和带有supportv4.jar的主项目以及一个内部jar组成 更新 我选择了导出库项目和JAR(在主项目中),当它部署到设备上时,它会工作,而.apk的大小仍然

在更新到ADT r17工具之后,我们遇到了一些在.apk中class.dex文件为3.2MB而不是700KB的开发框的问题。除了膨胀的dex文件,应用程序不能从设备启动。它抛出了一个ClassNotFoundException

我们不知所措,因为所有的project/eclipse设置在不同的开发环境中都是相同的

该项目本身由两个库项目和带有supportv4.jar的主项目以及一个内部jar组成

更新

我选择了导出库项目和JAR(在主项目中),当它部署到设备上时,它会工作,而.apk的大小仍然是它的两倍。另一个有趣的部分是(在不起作用的盒子上),我们在启动时有50%的失败率(即eclipse冻结)。因此,它基本上仍然无法使用。在r16 tools上,构建和发布任何一个盒子都没有问题

更新v0.2

我让库项目1依赖于库项目2,并且只向lib1添加了必要的jar。它启动并运行,但每次对源代码进行更改都需要3-4分钟来重新编译/构建/部署,并且apk仍然是正常大小

更新v0.3

更有趣的是,它将通过命令行快速编译,而不是通过eclipse。我仍然得到一个非常大的.apk(7.16MB对以前“正常”的apk是3.xxMB)

更新v0.4

事实证明,即使有更新的sdk/adt,一些box的eclipse也在毫无怨言地使用ADT15/16(帮助->关于eclipse->灌输细节)。那些是功能盒

更新V0.5


他们今天发布了工具r18,可以“修复”这些问题,但apk的大小仍然是“原始”的两倍,构建需要相当长的时间才能完成。我们最终将该项目整合到一个项目中,从长远来看,这不是一个令人满意的答案,但我们不能再浪费任何时间调试我们的工具。

如果您将JAR添加到每个项目中(ADT16中的工作方式,等等),您可能会得到这个结果。此外,ADT17会自动在libs/下为jar添加广告,因此如果您有较旧版本的jar,可能会遇到问题。将jar放在库项目的lib/下,移除所有jar
您已经向主项目中添加了构建类路径

除了Nikolays的回答之外,您可能还需要查看proguard的设置。现在的情况不同了,当您使用r17与旧版本相比时,可能会删除一大堆内容。

除非JAR完全相同,否则编译器将逐步淘汰重复版本。ADT17会根据(IIRC)SHA1总和检查并发出一些“版本”警告,但是旧的东西仍然可以包括在内:如果在libs/下有lib-1.0.jar和lib-2.0.jar,这两个都将被添加。详细信息:这意味着,除非它们是完全相同的文件,否则它们将被包含多次,这就是我所说的。@handler'Hm,'phase out'=='include multiples'?我的错,我写错了,当JAR完全相同时,编译将淘汰重复的文件。