3

好的,事情就是这样,我花了几天时间搜索所有数据库,所以要么我没有搜索正确的单词,要么没有答案,希望“还”。

症状:-编译Android项目DX每次构建项目时都会编译所有jar-没有理由这样做一次就足够了,无论如何每次都这样做,每次构建都需要很长时间而不是几秒钟需要几分钟。

真正的问题:

-添加几个罐子导致 Eclipse 崩溃——现在这是这些设置(重罐子)-Xms256m -Xmx1024m -XX:+UseParallelGC -XX:PermSize=256M -XX:MaxPermSize=512M

(这实际上提供了更好的性能,所以如果你的 Eclipse 编译速度慢,你可以添加 -XX:+UseParallelGC 它会有所帮助)(我不能将它设置得比这更高,当 Eclipse 崩溃时,java 堆大小达到 750m,gc 不会在 DX 编译 jar 时工作,它会尝试在两者之间进行尝试,但 CPU 很忙,不允许它这样做,所以当它到达第四个 3MB 的 jar 时,它的堆上有 600MB 之类的东西,这是为什么我使用 gcoverheadlimit)

将它们中的每一个或几个一起编译会很好地编译它(在同一个android项目中),问题是我找不到单独编译它们的方法(然后我需要在客户端设备上安装apks),当我将它们编译在一起 Eclipse 崩溃。

我尝试使用 cmd 和 DX 逐一编译它们,虽然它是构建的,但是当我在 eclispe 中构建项目时它会重建它,所以就像我什么都没做一样,也试图将 jar 转换为 DEX 文件,没有帮助.

我写了很多关于java堆大小的帖子,这不是我的情况,我什至使用了gcoverheadlimit,太多的罐子会导致它崩溃,如果有人有想法/解决方案,我会向他/她致敬......

总结一下:我想将java常规jar转换为Dalvik格式,然后将其作为资源添加到android项目中,所以当项目编译完成时,不需要将jar转换为Dalvik格式,因为它已经完成了。

4

3 回答 3

2

好的,经过长时间的研究,我认为我知道问题出在哪里,但是我还不知道如何解决它。

症状:编译大 jar 和/或多个 jar,导致 eclipse 崩溃,当它不崩溃时错误消息:写入输出时出错:操作码 == null,转换为 Dalvik 格式失败,错误 2。

原因:DX 无法处理超过它可以包含在 16 位字符串中的内容,因此,无法包含(至少同时不包含)超过该字符串的长度。

结果:无法将 Android 的复杂应用程序作为一个 APK 进行编程。

给android开发者的建议(我不太清楚你是怎么构建的):你可以对这些字符串使用arraylist,每个字符串依次写入classes.dex文件,然后,写入将没有限制一个 APK 的代码,和/或根据开发人员的需要添加尽可能多的 jar,这是一个假设,这并不容易,但也不太复杂,绝对不是那些制作 Android 的人,同意吗?

解决方法:对不起,但我还没有解决方法,我花了一些时间来解决这个问题,因为 eclipse 崩溃了,我没有收到“opcode == null”错误消息,所以我认为这是一个eclipse 问题,我很高兴得到关于这个问题的第二和第三意见。

于 2011-05-29T14:35:40.593 回答
0

构建 JAR 后,将它们添加为外部 JAR...

在 Eclipse 中选择“项目”菜单->“属性”,然后选择“Java 构建路径”。选择“库”选项卡,然后单击“添加外部 JAR...”按钮,然后浏览并添加它们。

于 2011-05-27T01:47:59.873 回答
0

我曾经也有过一样的问题。详细输出中有很多“Dx 处理 ...”消息,构建 classes.dex(3.4 Mb) 大约需要 3-4 分钟。那很慢,我感到很不舒服。然后我做了一个研究,发现问题的原因是错误的eclipse JVM设置(eclipse.ini)。顺便说一句,我从一些超过 100 个接受的 stackoverflow 答案中得到了这个讨厌的配置。

请确保 eclipse.ini 不包含以下行:

    编译阈值=5

我删除了这一行,现在编译需要大约 10 秒!!!另外,现在我在 Eclipse 配置中使用 ParallelGC 而不是 G1GC,因为它更稳定并且不会使我的 IDE 崩溃。

因此,您的主要任务是修改 eclipse.ini 并删除所有可疑和实验性参数。

于 2012-10-11T10:41:21.470 回答