【问题标题】:Android Error in Eclipse: "Unable to execute dex: Cannot merge new index 65799 into a non-jumbo instruction!"Eclipse 中的 Android 错误:“无法执行 dex:无法将新索引 65799 合并到非巨型指令中!”
【发布时间】:2012-11-18 11:57:26
【问题描述】:

我正在尝试使用 Eclipse 使用 OpenSAML 的 Android 项目。我已经在构建路径中添加了所有必需的 jar 文件。现在,当我将程序作为 Android 应用程序运行时,会出现以下错误:

[2012-11-18 11:52:59 - Dex Loader] Unable to execute dex: Cannot merge new index 67075 into a non-jumbo instruction!
[2012-11-18 11:52:59 - MyTestProgram] Conversion to Dalvik format failed: Unable to execute dex: Cannot merge new index 67075 into a non-jumbo instruction!

我用谷歌搜索了一下,但没有任何结果。这个错误意味着什么?

【问题讨论】:

  • 尝试重新打开你的eclipse。我能够使用它解决该错误。
  • 我尝试了很多次,但卡在这里!
  • @Ripul 你能让opensaml和android poc工作吗
  • @war_Hero,不是真的,它有太多的依赖项,我无法将它们捆绑在一个 Android 应用程序中。我写了一个基于 SICS 轻量级 SAML 库 (sics.se/~ludwig/assertionServer/SAMLlib.pdf) 的 SAML 精简版。希望对您有所帮助。
  • @Ripul 我正在尝试在 android webview 中实现 saml,到目前为止还没有出现任何问题,因为您已经标记了 android 和 saml,无论如何谢谢

标签: android eclipse opensaml


【解决方案1】:

我发现一个对我有用的解决方案是将dex.force.jumbo=true 添加到我的project.properties

这点被指出在:https://groups.google.com/forum/?fromgroups=#!topic/adt-dev/tuLXN9GkVas

这是假设您正在运行 ADT 21,因为此功能在以前的版本中不可用。

【讨论】:

  • 感谢您的回答。我试过那个。但我得到了这个:
    安装错误:INSTALL_FAILED_DEXOPT 请检查 logcat 输出以获取更多详细信息。启动已取消! 然后我检查了 logcat。而在logcat中,输出为:W/installd(40): DexInv: --- END '/data/app/*.apk' --- status=0xff00, process failed E/installd(40 ): dexopt 在 '/data/dalvik-cache/data@app@*.apk@classes.dex' res = 65280 W/PackageManager(149) 上失败:无法在 /data/app/*.apk 中安装包.
    有什么想法吗?
  • 尝试进行干净的重建?
  • 我确实做到了。问题是 logcat 没有产生足够的输出来理解正在发生的事情!
  • 为我工作,确实需要清理和重建,然后由于INSTALL_FAILED_UID_CHANGED 而遇到问题,重启手机似乎可以解决。
  • 我清理并重建了项目,重启了手机,重启了编辑器。仍然没有解决办法。卡住了!
【解决方案2】:

同样的问题……随便放

dex.force.jumbo=true

在 project.properties 的第一行

【讨论】:

【解决方案3】:

如果使用 gradle build,只需将 dexOptions 添加到 build.gradle 即可启用 jumbo 模式:

android {
    dexOptions {
        jumboMode = true
    }
}

记得在你的新建筑之前运行“gradle clean”。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,但我的 IDE 是 IntelliJ IDEA 13。在那个版本中,project.properties 文件中的 dex.force.jumbo 指令被忽略。

    要启用它,只需转到 设置 |编译器 | Android DX 并选择 Force jumbo mode 选项。

    希望它有所帮助(这是我能找到的唯一与 SO 相关的问题)。

    【讨论】:

    • 设置中没有Android DX这样的部分。 Android Studio 中没有这样的选项 Force jumbo mode(基于 IntelliJ IDEA)。
    • 因为 IntelliJ 在很多方面与 Android Studio 不同,这就是其中之一。由于 Studio 默认使用 Gradle,因此您需要在 build.gradle 文件中指定 dexOptions { jumboMode = true }
    【解决方案5】:

    仅添加 jumboMode=true 不适用于我的 gradle 构建。但是这很有效(引用自 adt-dev 组中的 Xavier 作为对该区域中提交的错误的回复):

    "尝试手动删除所有构建文件夹并重新构建,使 确定项目中的 dexOptions.jumboMode 设置为 true 吗?

    存在一个问题,即根项目的构建未在 clean 任务,其中包含一些关于 pre-dexed 的信息 图书馆。”

    【讨论】:

      【解决方案6】:

      添加一些解释:

      当 Eclipse 尝试增量构建时会发生这种情况,此时更改会增加应用程序中字符串常量的数量。原始 dex 具有非巨型指令,而合并到其中的新 dex 具有巨型指令。从头开始构建时,进行清理将表明它可以工作。

      只要您的应用程序中的字符串数量单调增加,增量构建就会继续工作。

      【讨论】:

        【解决方案7】:

        我遇到了同样的问题,但在我的情况下,“dex.force.jumbo=true”命令并不能解决问题。 我尝试更新 JDK 和 JRE ,这解决了问题。

        希望这个答案有所帮助

        【讨论】:

          猜你喜欢
          • 2014-06-24
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          • 2014-11-23
          • 1970-01-01
          • 1970-01-01
          • 2016-02-08
          • 1970-01-01
          相关资源
          最近更新 更多