【问题标题】:Multiple dex files - Conversion to Dalvik format failed - Unable to execute dex多个 dex 文件 - 转换为 Dalvik 格式失败 - 无法执行 dex
【发布时间】:2013-04-18 15:39:54
【问题描述】:

我有 2 个应用版本 - 专业版和精简版。它们都已在 v1.01 上市。我正在尝试为两者发布 v1.1。此更新包括 SwawrmConnect 集成,以便使用其全球排行榜。

我应该首先说我知道我没有正确维护我的代码。我有 2 个完全独立的应用程序,它们共享大约 90% 的代码。我将它们分开维护,因为在一周或 2 或 3 周未能弄清楚如何做一个库和共享代码之后,我放弃了,就这样去做了。

SwarmConnect 是我使用的第一个 jar,必须为两个应用程序创建一个库(参见下面的文件结构截图)。

现在我的精简版正在运行并准备发布。我现在正试图将我的专业版放到需要发布的位置。我相当肯定所有 java/xml 文件都是最新的并且准备好了。当我在模拟器中运行专业版时,出现以下错误:

[2013-04-18 11:24:41 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/swarmconnect/loopj/android/http/AsyncHttpResponseHandler;
[2013-04-18 11:24:41 - BibleTriviaPro] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/swarmconnect/loopj/android/http/AsyncHttpResponseHandler;

我尝试过的事情:

  • 清理/重建
  • 更新 Eclipse
  • 删除 bin 和 gen 文件夹
  • 重启 Eclipse
  • 加上其他一些东西

我的文件结构:

问题可能是我试图将 SwarmConnect 用作​​ 2 个项目(精简版和专业版)的库吗?

编辑:

以下是运行良好的 lite 版本的文件结构。在模拟器上编译和运行。

【问题讨论】:

  • 您已经添加了两次 SwarmConnect。这就是问题
  • 我已经编辑了我的开场白。你可以看到我的 Lite 版本看起来和我的 Pro 版本一样。为什么一个有效而另一个无效?我的 Lite 版本也有两次罐子,而且效果很好。
  • @Matt 包含一个 jar 两次肯定会导致问题,无论如何:我不相信 Eclipse 告诉您的内容,除非您自己实际查看构建文件。
  • 好的,我也可以修复精简版。如果一个 jar 应该只在项目中出现一次,那么它应该在哪里?如果我知道我可以删除其他人。
  • BibleTriviaPro 附有那个小红叉。由于您正在添加 Eclipse 布局的图像,您能否也发布问题部分的图像?

标签: java android dalvik dex


【解决方案1】:

巧合的是,前天我遇到了同样的问题。这是我建议您执行的操作。

首先要确保您备份了当前位于“Android Dependencies”/“libs”文件夹中的所有 jar。

现在,让我们先按照以下步骤修复精简版。

  1. 从 Eclipse 的 Project Explorer 下的“Android Dependencies”文件夹中删除除 android-support-v4.jar 之外的所有 jar 文件。

  2. 类似地从 Eclipse 中 Project Explorer 下的 libs 文件夹中删除除 android-support-v4.jar 之外的所有 Jar 文件。

  3. 现在右键单击您的项目-> 选择属性-> 选择 Java 构建路径-> 选择添加外部 JAR。添加所有必要的jar 文件(只需确保只添加一次特定的jar 文件)。

最后清理项目并构建它。现在将相同的步骤序列应用于专业版。 应该这样做。

更新:- 如果您在完成所有这些操作后看到 Eclipse 嘲笑一些编译时错误,您可能需要做的就是通过按 Ctrl 进行必要的导入来修复这些编译时错误+Shift+O.

[我假设项目的 pro 和 lite 版本在源依赖等方面没有联系。我的意思是说它们基本上是完全独立的。]

希望这会有所帮助。

【讨论】:

  • 您认为是正确的。这两个应用程序是完全独立的。我会执行这些步骤并报告。
  • 抱歉刚刚添加了一个快速更新。它只是闪给我,以防你遇到棘手的情况。
  • 我在“项目”依赖项中有项目,而 jar 在库中。笨拙。
  • 全部删除,再次添加,全部修复。多么奇怪的错误:)
  • 全部删除,再次添加,全部修复。多么奇怪的错误:)
【解决方案2】:

我强烈怀疑这是你的问题

  1. 右键单击您的项目
  2. 在“Android”选项下查看
  3. 在下方窗格中查看“Swarm Connect”是否存在
  4. 如果没有,添加它(虽然我真的怀疑它已经存在)
  5. 从您的 libs 目录中删除 Swarm.jar

原因是:当您在 Eclipse 中将库项目添加到 Android 项目时,它不会显示在您的 libs 目录中。实际上,我试图将 .jar 文件添加到项目中,但被告知这是错误的方法(我认为至少在 API 14 之前)。

我的猜测是,在您的“非专业”版本中,您没有在项目选项中链接它,因此它仍然可以正确编译。不过,您应该按照我刚才描述的方式链接它,以避免在库尝试访问自己的资源时出现问题。

【讨论】:

    【解决方案3】:

    上述解决方案对我不起作用,我所要做的就是在外部添加 libs 文件夹中的 jar 并取消选中订单和导出选项卡下的 Android 私有库。

     right click--
                 java build path--
                                   order and export tab ->Uncheck Android private libraries 
                                       and add jars in the libs folder externally.
    

    执行上述步骤。不知道为什么会这样。

    【讨论】:

      【解决方案4】:

      我在上面尝试了@Sriram 的答案。它没有用。

      然后我必须从 Project->Properties->Java Build Path->Libraries 位置删除库并添加实际的 jar(我需要 android-support-v4.jar 和 android-support-v13.jar)进入我项目的 libs 文件夹。然后它起作用了:

      (注意没有“Referenced Libraries”文件夹)

      【讨论】:

        【解决方案5】:

        我收到此错误是因为我使用了整个 Android 开发工具包安装程序(Eclipse 加 SDK,日期为 2013 年 2 月 6 日)。我能够摆脱它的唯一方法是卸载所有这些,并从 eclipse.org 单独安装 Eclipse For Java Developers,并仅从 Android 站点安装 Android SDK。工具包附带的 Eclipse 对从何处包含库有一些有趣的想法,更不用说对 c++ 和 gdb 的支持。

        【讨论】:

          猜你喜欢
          • 2014-01-25
          • 2013-03-05
          • 1970-01-01
          • 1970-01-01
          • 2017-04-01
          • 1970-01-01
          • 2012-10-12
          • 1970-01-01
          • 2011-09-12
          相关资源
          最近更新 更多