多个dex文件 - 转换为Dalvik格式失败 - 无法执行dex

时间:2013-04-18 15:39:54

标签: java android dalvik dex

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

我应该首先说我知道我没有正确维护我的代码。我有2个完全独立的应用程序,可能共享90%的代码。我单独维护它们是因为经过一周或者2或3次未能弄清楚如何建立一个库并共享代码之后,我放弃了,就这样用它来了。

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

现在我的Lite版本正在运行并准备发布。我现在正试图将我的专业版本发布到需要发布的位置。我相当确定所有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
  • 加上其他一些东西

我的文件结构:

enter image description here

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

编辑:

以下是完美运行的lite版本的文件结构。在模拟器上编译并运行。

enter image description here

5 个答案:

答案 0 :(得分:37)

巧合的是,我前天遇到了同样的问题。这是我建议你做的。

首先要确保您拥有目前驻留在“Android Dependencies”/“libs”文件夹中的所有jar的备份。

现在,我们首先按照以下步骤修复lite版本。

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

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

  3. 现在右键点击你的项目 - >选择属性 - >选择Java Build Path->选择Add External JARs。添加所有必需的jar文件(只需确保仅添加一个特定的jar文件)。

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

    更新: - 如果您在完成所有这些操作后看到Eclipse发生了一些编译时错误,那么您可能需要做的就是通过按 Ctrl 执行必要的导入来修复这些编译时错误+ + 0

    [我假设项目的专业版和精简版之间在源依赖等方面没有联系。我的意思是基本上他们完全独立。]

    希望这有帮助。

答案 1 :(得分:2)

我强烈怀疑这是你的问题

  1. 右键单击您的项目
  2. 查看“Android”选项
  3. 在下方窗格中查看是否存在“Swarm Connect”
  4. 如果没有,请添加它(虽然我真的怀疑它已经存在)
  5. 从libs目录中删除Swarm.jar
  6. 原因是:当您将库项目添加到Eclipse中的Android项目时,它不会显示在您的libs目录中。我实际上试图将.jar文件添加到项目中并被告知这是错误的方法(至少在API 14之前,我认为)。

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:0)

我试过@Sriram的上述答案。它没有用。

然后我不得不从Project-> Properties-> Java Build Path-> Libraries地方删除这些库并添加实际的jar' s(我需要android-support-v4.jar和android -support-v13.jar)到我项目的libs文件夹中。然后它奏效了:

final structure

(请注意,没有" Referenced Libraries"文件夹)

答案 4 :(得分:-1)

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