【问题标题】:compiling Jars and add them to android project编译jar并将它们添加到android项目中
【发布时间】:2011-09-03 01:12:28
【问题描述】:

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

症状: - 编译 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,太多的 jar 会导致它崩溃,如果有人有想法/解决方案,我会向他/她致敬...

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

【问题讨论】:

  • 这有什么更新吗?当我使用 ~9MB jar 构建 apk 时,我遇到了同样的问题
  • 嗨,这方面有更新吗?我也在使用许多 jar 文件,并且在转换为 apk 期间它一直说堆大小错误。如果你这样做,也请告诉我。感谢你在期待。 =)

标签: java android eclipse jar dx


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我希望就这么简单,构建 jars 是容易的部分,导入它们很容易,困难的部分是将它们转换为 Dalvik 格式,并将它们添加到 Android 项目中,这必须在一个 APK 上构建,除非有人有解决此问题的想法...
    • @Ben:对不起,我不应该说要导入它们——这是错误的做法。将它们添加到 Java 构建路径。我已经编辑了我的答案以显示这一点。一旦添加为外部 JAR,它们就不会包含在项目构建过程中。
    • 首先感谢您的回复,我很感激,我几乎成为了导入jar的高手,我使用了eclipse中可用的所有方法,但是,我的问题是没有添加jar,我的问题是当你编译一个android项目时,所有的资源都被转换为Dalvik,使用DX,在这个转换eclipse崩溃中,这是因为我添加了太多的jar,但我必须拥有它们,就像我提到的这些的转换jars 到 dalvik 需要太长时间,每次我编译项目时都会占用我添加的所有 jars 并将它们转换为 Dalvik,我必须找到解决方法
    【解决方案3】:

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

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

    编译阈值=5

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      相关资源
      最近更新 更多